Laurence, Thank you for your very quick reply. I did as you suggested and now the ConflictError is now handled. And that is a most excellent thing because now ConflictError is raised every time. So it still seems to be confused. I am trying to figure out if I will be able to use ZEO in my application.
Now my program reads: while True: root[ "one" ] = time.asctime() while True: try: print "Try to commit transaction" transaction.commit() print "root is", root except POSException.ConflictError: print "we have a conflict" transaction.abort() time.sleep(.2) else: break time.sleep(10) And the output is: // the program is only running once here Try to commit transaction root is {'one': 'Thu Nov 26 11:37:53 2009'} Try to commit transaction root is {'one': 'Thu Nov 26 11:38:03 2009'} Try to commit transaction root is {'one': 'Thu Nov 26 11:38:13 2009'} Try to commit transaction root is {'one': 'Thu Nov 26 11:38:23 2009'} Try to commit transaction root is {'one': 'Thu Nov 26 11:38:33 2009'} // after I start a second copy, the first copy always has a conflict ( the second copy does not get this conflict error). Try to commit transaction we have a conflict Try to commit transaction root is {'one': 'Thu Nov 26 11:38:35 2009'} Try to commit transaction we have a conflict Try to commit transaction root is {'one': 'Thu Nov 26 11:38:46 2009'} Try to commit transaction we have a conflict Try to commit transaction root is {'one': 'Thu Nov 26 11:38:56 2009'} Try to commit transaction we have a conflict thanks, tom Laurence Rowe wrote: > > 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 > > -- View this message in context: http://old.nabble.com/newbie-ZEO-first-try.--ConflictError.-tp26532984p26533587.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-Dev@zope.org https://mail.zope.org/mailman/listinfo/zodb-dev