Hello I want to set an object's last modification time to match a certain date. I see that this comes from the _p_mtime attribute and in cPersistence.c it is derived from _p_serial. But when I try to set explicitely _p_serial, there is a ConflictError: ZODB.POSException.ConflictError: database conflict error (oid 0x104a, serial this txn started with 0x035cfc6333333333 2005-05-01 10:11:12.000000, serial currently committed 0x035f10fe1d242e66 2005-08-03 02:38:06.830000) Writting _p_serial used to work fine at least until Zope 2.6.x (http://mail.zope.org/pipermail/zope-dev/2000-March/004020.html) Now I'm using Zope 2.7.7. Maybe I should not be playing with _p_serial, but how can I set the object's last modification time? I want it to be in sync with an external representation (stored in CVS). This is a test script: import Zope from Acquisition import aq_base from ZODB.TimeStamp import TimeStamp from OFS.Folder import Folder from DateTime import DateTime Zope.configure('..\etc\zope.conf') root = Zope.app() # create a test folder, if it does not exist if not 'test' in root.objectIds(): print 'Creating test folder' test = Folder(id='test') root._setObject('test',Folder(id='test')) get_transaction().commit() # I want to change its last-modification-time target = aq_base(root.test) print 'Test folder: %s _p_serial=%s _p_mtime=%s b_m_t=%s' % (target.id, target._p_serial, DateTime(target._p_mtime), target.bobobase_modification_time()) ts = TimeStamp(2005,5,1,10,11,12) # a sample timestamp target._p_serial = repr(ts) target._p_changed = 1 get_transaction().commit() print 'target._p_serial modified OK' print 'Test folder: %s _p_serial=%s _p_mtime=%s b_m_t=%s' % (target.id, target._p_serial, DateTime(target._p_mtime), target.bobobase_modification_time()) #output: #Test folder: test _p_serial=_รพ$.f _p_mtime=2005/08/02 23:38:06.830 GMT-3 b_m_t=2005/08/02 23:38:06.830 GMT-3 #Traceback (most recent call last): # File "C:\Prog\Zope\Questor\bin\testserial.py", line 22, in ? # get_transaction().commit() # File "C:\Prog\Zope\ZopeServer\lib\python\ZODB\Transaction.py", line 241, in commit # ncommitted += self._commit_objects(objects) # File "C:\Prog\Zope\ZopeServer\lib\python\ZODB\Transaction.py", line 356, in _commit_objects # jar.commit(o, self) # File "C:\Prog\Zope\ZopeServer\lib\python\ZODB\Connection.py", line 454, in commit # s=dbstore(oid,serial,p,version,transaction) # File "C:\Prog\Zope\ZopeServer\lib\python\ZODB\FileStorage.py", line 782, in store # serials=(oserial, serial)) #ZODB.POSException.ConflictError: database conflict error (oid 0x104a, serial this txn started with 0x035cfc6333333333 2005-05-01 10:11:12.000000, serial currently committed 0x035f10fe1d242e66 2005-08-03 02:38:06.830000) Gabriel Genellina Softlab SRL