You must be prepared to abort and retry the whole transaction: while True: while True: try: root[ "one" ] = time.asctime() transaction.commit() except POSException.ConflictError: transaction.abort() time.sleep(.2) else: break
time.sleep(10) Laurence 2009/11/26 tsmiller <tsmil...@gnixterhouse.com>: > > ZODB Developers, > > Can you please tell me what I am doing wrong in my first simple attempt to > make use of ZEO. My ZODB and ZEO are both the same version (3.6.0). > > First, I start my ZEO server and it looks like it starts properly: > > python2.4 /usr/lib/python2.4/site-packages/ZEO/runzeo.py -a localhost:9100 > -f /home/tom/zeo/test.fs > > ------ > 2009-11-26T00:05:14 INFO ZEO.runzeo (8192) opening storage '1' using > FileStorage > ------ > 2009-11-26T00:05:14 INFO ZEO.StorageServer (8192) StorageServer created RW > with storages: 1:RW:/home/tom/zeo/test.fs > ------ > 2009-11-26T00:05:14 INFO ZEO.zrpc (8192) listening on ('localhost', 9100) > > > Second, I start my client, twice. The purpose is to write to the same > test.fs file from both of them. The idea is to loop continuously, writing > to test.fs from each program. If I only start the program once, it writes > to test.fs fine. But the first time it tries to commit a transaction after > starting a second copy of the program, it always gives an error. > > from ZEO import ClientStorage > from ZODB import DB > from ZODB import POSException > import transaction > import time > > addr = 'localhost', 9100 > storage = ClientStorage.ClientStorage( addr ) > db = DB(storage) > conn = db.open() > root = conn.root() > while True: > root[ "one" ] = time.asctime() > while True: > try: > transaction.commit() > except POSException.ConflictError: > time.sleep(.2) > else: > break > > time.sleep(10) > > > The traceback folows. The conflict error is not handled and I don't know > why. I am sure that I am missing something simple. > > we have a conflict > Traceback (most recent call last): > File "zeotest.py", line 17, in ? > transaction.commit() > File "/usr/lib/python2.4/site-packages/transaction/_manager.py", line 96, > in commit > return self.get().commit(sub, deprecation_wng=False) > File "/usr/lib/python2.4/site-packages/transaction/_transaction.py", line > 370, in commit > self._prior_operation_failed() # doesn't return > File "/usr/lib/python2.4/site-packages/transaction/_transaction.py", line > 250, in _prior_operation_failed > raise TransactionFailedError("An operation previously failed, " > ZODB.POSException.TransactionFailedError: An operation previously failed, > with traceback: > > File "zeotest.py", line 17, in ? > transaction.commit() > File "/usr/lib/python2.4/site-packages/transaction/_manager.py", line 96, > in commit > return self.get().commit(sub, deprecation_wng=False) > File "/usr/lib/python2.4/site-packages/transaction/_transaction.py", line > 380, in commit > self._saveCommitishError() # This raises! > File "/usr/lib/python2.4/site-packages/transaction/_transaction.py", line > 378, in commit > self._commitResources() > File "/usr/lib/python2.4/site-packages/transaction/_transaction.py", line > 433, in _commitResources > rm.commit(self) > File "/usr/lib/python2.4/site-packages/ZODB/Connection.py", line 484, in > commit > self._commit(transaction) > File "/usr/lib/python2.4/site-packages/ZODB/Connection.py", line 518, in > _commit > raise ConflictError(object=obj) > ConflictError: database conflict error (oid 0x00, class > persistent.mapping.PersistentMapping) > > > thanks, > > tom > > > -- > View this message in context: > http://old.nabble.com/newbie-ZEO-first-try.--ConflictError.-tp26532984p26532984.html > Sent from the Zope - ZODB-Dev mailing list archive at Nabble.com. > > _______________________________________________ > For more information about ZODB, see the ZODB Wiki: > http://www.zope.org/Wikis/ZODB/ > > ZODB-Dev mailing list - zodb-...@zope.org > https://mail.zope.org/mailman/listinfo/zodb-dev > _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org https://mail.zope.org/mailman/listinfo/zodb-dev