On 2012-10-24, at 8:52 PM, Greg Ewing
On 25/10/12 11:47, Yury Selivanov wrote:
Cleanup code for a DB connection *will* need to run queries to the database (at least in some circumstances).
That smells like a design problem to me. If something goes wrong, the most you should have to do is roll back any transactions you were in the middle of. Trying to perform further queries is just inviting more trouble.
Right. And that rolling back - a tiny db query "rollback" - is an async code, and where there is an async code, no matter how tiny and fast, - scheduler has an opportunity to screw it up. Guido's 'with protected_finally' should work, although it probably will look weird for for people unfamiliar with coroutines and this particular problem. - Yury