[Zope3-checkins] CVS: Zope3/src/zodb/storage - interfaces.py:1.8
Jeremy Hylton
jeremy@zope.com
Wed, 5 Mar 2003 17:15:00 -0500
Update of /cvs-repository/Zope3/src/zodb/storage
In directory cvs.zope.org:/tmp/cvs-serv18303/zodb/storage
Modified Files:
interfaces.py
Log Message:
Merge jeremy-atomic-invalidation-branch.
Change invalidation() APIs to pass a set of oids rather than an
individual oid. All the oids in one call must be processed
atomically.
=== Zope3/src/zodb/storage/interfaces.py 1.7 => 1.8 ===
--- Zope3/src/zodb/storage/interfaces.py:1.7 Tue Feb 25 13:55:03 2003
+++ Zope3/src/zodb/storage/interfaces.py Wed Mar 5 17:14:27 2003
@@ -40,6 +40,24 @@
This part of the interface should document important concepts like
what methods must execute in a transaction context.
+
+ Synchronization
+
+ A storage implementation must be thread-safe. Multiple threads
+ call call storage methods at any time.
+
+ A storage must implement a two-phase commit protocol for updates.
+ Only one transaction can commit at a time. The storage must
+ guarantee that after a tpcVote() call returns, no other
+ transaction can advance beyond the tpcVote() until the first
+ transaction commits or aborts. Some storages do not allow more
+ than one storage to advance beyond tpcBegin().
+
+ The load() method must always return the most recently committed
+ data. A load() method can not run at the same time as tpcFinish()
+ if it would be possible to read inconsistent data. XXX Need to
+ flesh out the details here.
+
"""
def close():