[ZODB-Dev] Re: POSKeyError in zodb-3.6.0

Chris Bainbridge chris.bainbridge at gmail.com
Mon Nov 6 14:13:05 EST 2006


The bug I'm getting on the client side is two or more clients
simultaneously reporting:

Traceback (most recent call last):
  File "/home/chrb/test_bad.py", line 45, in ?
    i = g.index(random.choice(g))
  File "/usr/lib/python2.4/UserList.py", line 78, in index
    def index(self, item, *args): return self.data.index(item, *args)
  File "/usr/lib/python2.4/UserList.py", line 17, in __eq__
    def __eq__(self, other): return self.data == self.__cast(other)
  File "/usr/lib/python2.4/site-packages/ZODB/Connection.py", line
732, in setstate
    self._setstate(obj)
  File "/usr/lib/python2.4/site-packages/ZODB/Connection.py", line
768, in _setstate
    p, serial = self._storage.load(obj._p_oid, self._version)
  File "/usr/lib/python2.4/site-packages/ZEO/ClientStorage.py", line
746, in load
    return self.loadEx(oid, version)[:2]
  File "/usr/lib/python2.4/site-packages/ZEO/ClientStorage.py", line
769, in loadEx
    data, tid, ver = self._server.loadEx(oid, version)
  File "/usr/lib/python2.4/site-packages/ZEO/ServerStub.py", line 192, in loadEx
    return self.rpc.call("loadEx", oid, version)
  File "/usr/lib/python2.4/site-packages/ZEO/zrpc/connection.py", line
536, in call
    raise inst # error raised by server
ZODB.POSException.POSKeyError: 0x01f5

This seems to be triggered by the call to PersistentList.index. If I
change the random select line to:

  i = random.randint(0, len(g)-1)

then I no longer see this error.

Presumably this just means that the access pattern for index() is
sufficient to trigger this bug, rather than index itself being the
problem.


More information about the ZODB-Dev mailing list