[Zope-CVS] CVS: Products/AdaptableStorage/serial/interfaces - IGateway.py:1.2
Shane Hathaway
shane@zope.com
Tue, 3 Dec 2002 18:11:25 -0500
Update of /cvs-repository/Products/AdaptableStorage/serial/interfaces
In directory cvs.zope.org:/tmp/cvs-serv22143/serial/interfaces
Modified Files:
IGateway.py
Log Message:
Running AdaptableStorage with the latest Zope revealed some flaws.
Fixed them all.
- Consistent ordering of transaction participants now makes it impossible to
add a jar to the transaction after the commit() method has begun.
AdaptableStorage (and perhaps other projects like ZPatterns) relied on
the ability to add a jar after commit has started. This could lead to
a deadlock. Reworked ASStorage, FSConnection, and the tests to deal with
this.
- Serials are now required to be hashable. This makes serials, used to
prevent conflicts, simpler and more robust.
- DBTab needs some kind of class it can call directly, so I added
the small subclasses FSStorage and FSDatabase to Zope2FS.
- Restored the PersistentExtra patch.
- The directory items gateway wants to write data about its children, but
sometimes its children aren't being written at the same time. Added
a "conditional" optional flag to FSConnection.writeSection(), allowing
data to be written only if other data gets written.
=== Products/AdaptableStorage/serial/interfaces/IGateway.py 1.1 => 1.2 ===
--- Products/AdaptableStorage/serial/interfaces/IGateway.py:1.1 Wed Nov 27 13:37:06 2002
+++ Products/AdaptableStorage/serial/interfaces/IGateway.py Tue Dec 3 18:10:53 2002
@@ -38,10 +38,11 @@
def load(object_mapper, key):
"""Loads data.
- Returns a pair containing the data and an object
- that acts as a serial number or a hash of the data.
- The serial number is either a time stamp or some other object
- that can be consistently compared to detect conflicts.
+ Returns a pair containing the data and an object that acts as
+ a serial number or a hash of the data. The serial number is
+ either a time stamp or some other object that can be
+ consistently compared to detect conflicts. The serial must be
+ hashable.
"""
def store(object_mapper, key, data):