[Dieter Maurer]
Subtransactions used to be used for two purposes:
* ensure that newly created objects get "_p_" attributes (especially "_p_jar" and "_p_oid")
* release memory in the mid of large transactions (i.e. reading and/or writing large amounts of objects)
With ZODB 3.4, subtransactions are implemented as savepoints. They can still be used for the first purpose. But, they no longer start cache garbage collection.
As a consequence, subtransactions/savepoints can be dropped at places where only the second purpose has mattered, e.g. in Zope's ZCatalog.
Over on zodb-dev, Jim (Fulton) confirmed that it was his intent that making a savepoint would trigger cache gc. It's a ZODB bug that it currently does not; I'll fix that: -----Original Message----- From: zodb-dev-bounces+tim=zope.com@zope.org On behalf of Jim Fulton Sent: Tuesday, August 23, 2005 2:53 PM To: Tim Peters Cc: zodb-dev@zope.org Subject: Re: [ZODB-Dev] Subtransaction backward compatibility ... Assuming that we no longer call incrgc, that would be an oversight. When a connection does a savepoint, it should also do an incrgc. Note that applications that *really* want to reduce memory after a savepoint may and often should make explicit cache-management calls on the transaction. This should still work. Jim -- Jim Fulton mailto:jim@zope.com Python Powered! CTO (540) 361-1714 http://www.python.org Zope Corporation http://www.zope.com http://www.zope.org