Tim Peters wrote at 2006-3-31 18:48 -0500:
>> What is the motivation to request synchronized transaction completion
>> by default?
>Primarily so we could stop seeing endless threads on zodb-dev asking
>why ZEO clients that didn't happen to modify any objects never saw
>current data. From the NEWS file:
>- (3.4a6) Relatedly, ``Connection`` implements ``ISynchronizer``, and
> ``Connection``'s ``afterCompletion()`` and ``newTransaction()`` methods now
> call ``sync()`` on the underlying storage (if the underlying storage has
> such a method), in addition to processing invalidations. The practical
> implication is that storage synchronization will be done automatically now,
> whenever a transaction is explicitly started, and after top-level
> transaction commit or abort. As a result, ``Connection.sync()`` should
> virtually never be needed anymore, and will eventually be deprecated.
Based on my observation, I fear it is a too expensive measure.
If an asyncore mainloop (or something equivalent) is running,
then we would get the same effect without the sync.
Maybe we should go this route (and ensure instead that a mainloop is
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org