Shane Hathaway wrote at 2008-1-31 11:55 -0700: > ... >Yes, quite right! > >However, we don't necessarily have to roll back the Postgres transaction >on every ZODB.Connection close, as we're doing now.
That sounds very nasty! In Zope, I definitely *WANT* to either commit or roll back the transaction when the request finishes. I definitely do not want to let the following completely unrelated request decide about the fate of my modifications. > If we leave the >Postgres transaction open even after the ZODB.Connection closes, then >when the ZODB.Connection reopens, we have the option of not polling, >since at that point ZODB's view of the database remains unchanged from >the last time the Connection was open. Yes, but you leave the fate of your previous activities to the future -- and you read older and older data which must increase serializability problems (Postgres might not garantee serializability even when the so called isolation level is chosen; in this case, you may not see the problems directly but nevertheless they are there). >It's not usually good practice to leave sessions idle in a transaction, >but this case seems like a good exception since it should significantly >reduce the database traffic. I agree that it can reduce traffic but I am almost convinced that the price will be high (in either "cannot serialize concurrent updates" or not directly noticable serializability violations). -- Dieter _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev