[Seaside] A recurring DNU

Nevin Pratt nevin at smalltalkpro.com
Mon Aug 11 22:04:18 CEST 2003


This is from the version of Seaside found on SqueakMap a week or so ago. 
 When an "unknownRequest" is received (i.e., a request for which there 
is no actionKey associated with it-- which likely means that the session 
has expired), the following is called:

   WASession>>unknownRequest:
      self pageExpired

As you can see, the above code just calls #pageExpired.  This seems 
pretty reasonable so far.  After all, if there is no actionKey 
associated with the request, the page must have expired, right?  Anyway, 
#pageExpired is implemented thus:

   WASession>>pageExpired
      expiryContinuation value: nil

The 'expiryContinuation' in the above code is a block, found here:

   WASession>>wrapContinuation: aContinuation
       | snap |
       snap _ state snapshot.
       ^ [:v |
        state restoreSnapshot: snap.
       aContinuation value: v]

So, in the above 'aContinuation value: v', the 'v' is a nil, because 
'WASession>>pageExpired' called it with a nil argument.  The 
'aContinuation' in the above code in turn is a block, found here:

   bookmarkForExpiry
       ^ Continuation
           currentDo: [:cc | expiryContinuation _ self
                           wrapContinuation: [:v |
                               self redirectWithMessage: 'That page has 
expired.' delay: 3.
                               cc value: v]]

In here, both the 'cc' and the 'v' temps are both nil, and this creates 
a 'MessageNotUnderstood: value:' because UndefinedObject does not 
understand #value:

Does this problem ring a bell for anybody?  I'm getting a couple of 
these DNU's a day now.  I never used to get them with the previous 
Seaside version from SqueakMap.

Nevin

-- 
Nevin Pratt
Bountiful Baby
http://www.bountifulbaby.com
(801) 992-3137




More information about the Seaside mailing list