[Zope-dev] ERROR(200) ZODB Couldn't load state for... Memory problem?

Russ Ferriday russf at topia.com
Fri Jul 23 10:44:31 EDT 2004


Thanks Tim and Chris! - You were both dead on in so many respects.

Chris, There was a correlation with flip in the logs

Tim: looks like once a None occurs it sticks.

Source of the problem was an old cache file (1-None-1) that could not 
be overwritten by the current uid running Zope. (That's the second 
stupid permissions problem in as many days. My advice - if you have any 
kind of cache problems occurring after an initial period, look hard at 
permissions. Secondly - don't be sloppy and run zope first as one user 
then as another. Thirdly grep the event logs for IOError first. That's 
the easiest thing to fix.)

more comments below...

On 23 Jul 2004, at 02:14, Tim Peters wrote:

> [Chris McDonough]
>> ...
>> I think the problem is related to ZEO client storage "cache flips".
>
> ..
> anyway, pointing to None.  But this code gives me a headache, and I'm
> not sure that can actually happen (despite that I hear you guys saying
> it is <wink>).
I was slow interpreting all of this due to separate event files.
This piece of bash script was helpful to get a grip of time order 
between Clients:

      grep ZEC ev*.log | sed 's/:/ /' | sort -k 2 > 
interleaved.ZEC.events.log

a multi-line merge script would be helpful. I'll bet someone's created 
one.

>
>> But then I turned off persistent ZEO client cachefile storage (but 
>> omitting
>> the "zeo-client-name" parameter from zope.conf), believing this would 
>> be a
>> workaround, but it hasn't been.  I gave up at that point and that's 
>> where I am now.
>
> Did you continue to get errors in the log near cache-flip times?  I
> don't see a way for checkSize() to screw up unless an unexpected
> exception is raised.
Bingo!
2004-07-21T11:35:07 INFO(0) ZEC:1-None-1 flipping cache files.  new 
current = 1
------
2004-07-21T11:35:07 ERROR(200) ZODB Couldn't load state for 
0000000000012323
Traceback (most recent call last):
   File "/usr/local/zope/zope271/lib/python/ZODB/Connection.py", line 
559, in setstate
     p, serial = self._storage.load(oid, self._version)
   File "/usr/local/zope/zope271/lib/python/ZEO/ClientStorage.py", line 
754, in load
     self._cache.checkSize(0)
   File "/usr/local/zope/zope271/lib/python/ZEO/ClientCache.py", line 
581, in checkSize
     self._f[current] = open(self._p[current],'w+b')
IOError: [Errno 13] Permission denied: '1-None-1'

>
>> ...
>> My theory is that it will happen as often as a Zope client's ZEO 
>> client storage
>> needs to flip its cache file.  The cache file is only flipped when it 
>> exceeds a
>> certain size and it only exceeds a certain size after a certain 
>> pattern of usage
>> causes it to do so (lots of loads from the database of new items, 
>> typically).
Yup!

>
> It appears that once self._f[self._current] is None, all future
> attempts by ZEO to store into its client cache will fail the same way.
>  So I'd be even more surprised if you saw just one of these occur.
Yup!

>
>> It would be nice if you could confirm this.  Reading the Zope event 
>> log
>> file of the client that generated the error would be a good start.
>
> The log is everything here.  The ZEO client cache logs most relevant
> messages at info level, producing msgs starting with "ZEC".
>

Thanks again for the insights.

--r.
—————————————————————
Russ Ferriday
Solution Workshops for Plone
(+44) (0) 7789 338868
http://www.solutionworkshops.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 3555 bytes
Desc: not available
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20040723/1e5a605b/attachment.bin


More information about the Zope-Dev mailing list