[ZODB-Dev] Re: BTrees strangeness (was [Zope-dev] Zope 2.X BIG
Session problems - blocker - our site dies - need help of
experience Zope developer, please)
michael
michael at looma.co.nz
Wed Mar 10 23:14:41 EST 2004
On 11/03/2004, at 1:07 PM, Chris McDonough wrote:
> On Wed, 2004-03-10 at 18:30, michael wrote:
>> On closer inspection I have another small detail - I'm only seeing
>> these KeyError's for sessions that have had a chance to expire and
>> when
>> trying to access the session from standard_error_message.
>
> Can you provide a complete traceback for the error message? I'm
> guessing that it happens during session garbage collection but I can't
> be sure without the traceback.
hmmm... continuing to refine what I think I'm seeing :-O
I don't get a KeyError thrown until *after* at least one rendering of
standard_error_message that includes an access to a session variable.
And I'm only getting KeyError's for sessions that have had a chance to
expire. And that KeyError will be thrown whenever any access is made
for the session. (Previously I thought I was *only* seeing KeyError's
being thrown from standard_error_message.) I can't yet say from what
I'm seeing if the session accessed in standard_error_message which
somehow corrupts the consistency of transience is the same session for
which the KeyError is thrown further down the track.
Here is an example traceback when the KeyError is thrown from a Script
(Python) that reads the session variable. Followed by a similar
traceback thrown when Zope tries to read that same sesssion variable in
my standard_error_message:
2004-03-11T16:13:03 ERROR(200) SiteError http://localhost:8080/test/read
Traceback (most recent call last):
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/ZPublisher/Publish.py",
line 101, in publish
request, bind=1)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/ZPublisher/mapply.py",
line 88, in mapply
if debug is not None: return debug(object,args,context)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/ZPublisher/Publish.py",
line 41, in call_object
result=apply(object,args) # Type s<cr> to step into published
object.
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Shared/DC/Scripts/
Bindings.py", line 306, in __call__
return self._bindAndExec(args, kw, None)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Shared/DC/Scripts/
Bindings.py", line 343, in _bindAndExec
return self._exec(bound_data, args, kw)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/PythonScripts/
PythonScript.py", line 318, in _exec
result = f(*args, **kw)
File "Script (Python)", line 2, in read
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/ZPublisher/
HTTPRequest.py", line 1218, in __getattr__
v = self.get(key, default, returnTaints=returnTaints)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/ZPublisher/
HTTPRequest.py", line 1178, in get
if callable(v): v = v()
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/Sessions/
SessionDataManager.py", line 93, in getSessionData
return self._getSessionDataObject(key)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/Sessions/
SessionDataManager.py", line 180, in _getSessionDataObject
ob = container.new_or_existing(key)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/Transience/
Transience.py", line 176, in new_or_existing
item = self.get(key, notfound)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/Transience/
Transience.py", line 809, in get
v = self._data[b].get(k, notfound)
KeyError: 1078974700
------
2004-03-11T16:13:04 BLATHER(-100) OFS Exception while rendering an
error message
Traceback (most recent call last):
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/OFS/SimpleItem.py", line
204, in raise_standardErrorMessage
v = s(**kwargs)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Shared/DC/Scripts/
Bindings.py", line 306, in __call__
return self._bindAndExec(args, kw, None)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Shared/DC/Scripts/
Bindings.py", line 343, in _bindAndExec
return self._exec(bound_data, args, kw)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/PythonScripts/
PythonScript.py", line 318, in _exec
result = f(*args, **kw)
File "Script (Python)", line 12, in standard_error_message
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/ZPublisher/
HTTPRequest.py", line 1218, in __getattr__
v = self.get(key, default, returnTaints=returnTaints)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/ZPublisher/
HTTPRequest.py", line 1178, in get
if callable(v): v = v()
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/Sessions/
SessionDataManager.py", line 93, in getSessionData
return self._getSessionDataObject(key)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/Sessions/
SessionDataManager.py", line 180, in _getSessionDataObject
ob = container.new_or_existing(key)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/Transience/
Transience.py", line 176, in new_or_existing
item = self.get(key, notfound)
File
"/Users/michael/Desktop/Zope-2.7.0/lib/python/Products/Transience/
Transience.py", line 809, in get
v = self._data[b].get(k, notfound)
KeyError: 1078974700
And the Python (Script) 'read' looks like:
request = container.REQUEST
session = request.SESSION
count = session.get('count',0)
return str(count)
Michael
More information about the Zope-Dev
mailing list