This is the bare implementation of that, only freeing resources when _manager.free() is called. A few notes:
We could also free the manager instance. This breaks a test in hooks.rst though.
The free method is not being called in a finally block. In the case of abort() this is probably acceptable because each individual data manager is protected by a try/except. Presumably in the case of a failed commit(), though, we are expecting people to turn around and call abort()? So in practice this should all work out?
Possible behaviour change: the synchronizers' afterCompletion methods are now being called with _resources empty (the manager would already have been cleared prior to this change). Since _resources is a private ivar, we shouldn't have to be concerned about this?
Per the discussion on the mailing list
This is the bare implementation of that, only freeing resources when _manager.free() is called. A few notes:
afterCompletion
methods are now being called with_resources
empty (the manager would already have been cleared prior to this change). Since_resources
is a private ivar, we shouldn't have to be concerned about this?