[ZODB-Dev] 3.2.1b1 with POSKeyError and ConflictError

Nicholas Henke henken at seas.upenn.edu
Fri May 16 18:25:14 EDT 2003


On Fri, 2003-05-16 at 11:48, Jeremy Hylton wrote:
> This is surprising, because pack should not change the current revision
> of any object.  If oid was XXX before pack, it should not be YYY after
> the pack.  If you can help dig into this, it would be helpful to get an
> fsdump of the storage before and after the pack.  Then we can examine it
> manually.  I'd be interested to know if XXX was current at the pack time
> and whether YYY existed before the pack.

Ok -- start the fun :) I wrapped my db classes with ZODB.fsdump.fsdump
before and after the pack. NOTE: I do not lock the database while
packing -- is that a problem ? Attached is the fsdump files from before
and after packing. The timestamp is the int(time.time()).

The oid in question looks to be an OOSet -- Is there a way that I can
open up the storage and find what the data for a particular oid really
is -- aka resolve the oid to a python object ? I don't know if that data
is helpfull or not.

Here is the traceback I got:
ERROR !!! Exiting:
The XMLRPC server seems to be having problems.
please send the following error to your administrator:
Traceback (most recent call last):
  File
"/usr/lib/python2.2/site-packages/clubmask/xmlrpc/xmlrpcClient.py", line
35, in rpcWrap
    return rpcserver.dummy(func, *args)
  File "/var/tmp/python2.2-2.2.2-root/usr/lib/python2.2/xmlrpclib.py",
line 821, in __call__
    return self.__send(self.__name, args)
  File "/var/tmp/python2.2-2.2.2-root/usr/lib/python2.2/xmlrpclib.py",
line 975, in __request
    verbose=self.__verbose
  File "/var/tmp/python2.2-2.2.2-root/usr/lib/python2.2/xmlrpclib.py",
line 853, in request
    return self.parse_response(h.getfile())
  File "/var/tmp/python2.2-2.2.2-root/usr/lib/python2.2/xmlrpclib.py",
line 896, in parse_response
    return u.close()
  File "/var/tmp/python2.2-2.2.2-root/usr/lib/python2.2/xmlrpclib.py",
line 571, in close
    raise apply(Fault, (), self._stack[0])
Fault: <Fault 1: 'ZODB.POSException.ConflictError:database conflict
error (oid 0000000000000054, serial was 034cf9689104015d, now
034cf968ad4cd700)'>


> I'm not sure what you mean to report.  Are you seeing POSKeyErrors after
> the new pack runs?  Did the storage has POSKeyErrors before you packed
> it?  While the new pack should prevent the undo-related POSKeyError
> problem, it can't fix problems in an existing storage caused by the old
> pack.

I am now seeing POSKeyErrors -- period. I have never seen them before.
All of the storages I am dealing with are _brand_ new -- I create a new
one for each test, and populate it with a stress test that tends to
bring out any errors in ZODB ( or IndexedCatalog for that matter ).

> 
> Note, also, that fstest.py does not look at object references.  You'd
> need to use fsrefs.py to check that.  (I'm not sure if fsrefs.py is
> present in the 3.1 line, but it is in 3.2 CVS.) 

Ok -- I've got that cvs checkout, and when I get a POSKerError again, I
will run that through it.

Nic
-- 
Nicholas Henke
Penguin Herder & Linux Cluster System Programmer
Liniac Project - Univ. of Pennsylvania
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 1053105151.afterpack.gz
Type: application/x-gzip
Size: 9644 bytes
Desc: not available
Url : http://lists.zope.org/pipermail/zodb-dev/attachments/20030516/3be05850/1053105151.afterpack-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 1053105151.beforepack.gz
Type: application/x-gzip
Size: 11507 bytes
Desc: not available
Url : http://lists.zope.org/pipermail/zodb-dev/attachments/20030516/3be05850/1053105151.beforepack-0001.bin


More information about the ZODB-Dev mailing list