Hello, I'm writing a custom data manager. The data manager should execute before the connection's data manager. So I provided the "sortKey" method. This works fine for the usual commit(). Once savepoints are involved however this fails, the connection's savepoint/rollback is executed before my custom data manager's savepoint/rollback.
This code in _transaction.py (in the _commitResources method) sorts the data managers: L = list(self._resources) L.sort(rm_cmp) The problem is _commitResources is only executed from within commit(). This means for a sequence such as transaction.begin() transaction.get().join( myDataManager ) transaction.savepoint() transaction.rollback() transaction.commit() the data managers are not sorted unless commit is encountered. If I move the sorting code to the join() method instead, I get the proper search order. Is this a bug? -Matthias P.S.: Thanks for this great writeup: http://repoze.org/tmdemo.html . It should be part of the official docs/the upcoming book. _______________________________________________ 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