Mmm... yep, that's a bad bit.  I've applied a fix to CVS.

On Mon, 2003-06-02 at 12:24, Edmund Lian wrote:
> I'm working off Webware in CVS. Something has changed in the way
> Application works with session IDs.
> 
> If the browser has been sitting around for a long time and WebKit is
> restarted, Application tries to retrieve a stale session object and
> fails due to a KeyError:
> 
> Traceback (most recent call last):
>    File "/opt/Webware/WebKit/Application.py", line 429, in
> dispatchRawRequest
>      self.runTransaction(trans)
>    File "/opt/Webware/WebKit/Application.py", line 476, in runTransaction
>      self.runServlet(servlet, trans)
>    File "/opt/Webware/WebKit/Application.py", line 501, in runServlet
>      servlet.runTransaction(trans)
>    File "./WebKit/Servlet.py", line 43, in runTransaction
>    File "/home/elian/mefa/SiteLib/Page.py", line 169, in sleep
>      self.showDebugInfo()
>    File "/home/elian/mefa/SiteLib/Page.py", line 628, in showDebugInfo
>      print "DDD", self._transaction.session()
>    File "./WebKit/Transaction.py", line 67, in session
>    File "/opt/Webware/WebKit/Application.py", line 307, in
> createSessionForTransaction
>      session = self.session(sessId)
>    File "/opt/Webware/WebKit/Application.py", line 275, in session
>      return self._sessions[sessionId]
>    File "./WebKit/SessionDynamicStore.py", line 74, in __getitem__
>    File "./WebKit/SessionMemoryStore.py", line 33, in __getitem__
> KeyError: 20030602003014-fbebd581e95e13ee6e46ca494f376a46
> 
> 
> What is happening is that the new version of createSessionForTransaction
> assumes that sessId is a valid, fresh session ID, so that it doesn't
> catch the KeyError. The lines in question are marked with *
> 
> 
>          sessId = transaction.request().sessionId()
>          if debug:
>              print prefix, 'sessId =', sessId
> *       if sessId:
> *           session = self.session(sessId)
> *           if debug: print prefix, 'retrieved session =', session
> *       else:
> *           session = Session(transaction)
> *           self._sessions[session.identifier()] = session
> *           if debug: print prefix, 'created session =', session
> 
> 
> I'm thinking that that following patch will fix this:
> 
> diff -r1.171 Application.py
> 306c306
> <       if sessId:
> ---
>  >       try:
> 309c309
> <       else:
> ---
>  >       except KeyError:
> 
> 
> Shall I submit this to via SourceForge?
> 
> 
> ...Edmund.
> 
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.net email is sponsored by: eBay
> Get office equipment for less on eBay!
> http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
> _______________________________________________
> Webware-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/webware-devel



-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
Webware-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-devel

Reply via email to