[Zodb-checkins] CVS: ZODB3/ZODB - POSException.py:1.20.6.2
Tim Peters
tim.one at comcast.net
Tue Jul 1 19:02:21 EDT 2003
Update of /cvs-repository/ZODB3/ZODB
In directory cvs.zope.org:/tmp/cvs-serv26232/ZODB
Modified Files:
Tag: zodb33-devel-branch
POSException.py
Log Message:
BTreesConflictError: Flesh this out with all the hard-won info that
got documented in ZODB4.
=== ZODB3/ZODB/POSException.py 1.20.6.1 => 1.20.6.2 ===
--- ZODB3/ZODB/POSException.py:1.20.6.1 Tue Jul 1 16:57:18 2003
+++ ZODB3/ZODB/POSException.py Tue Jul 1 18:02:20 2003
@@ -119,13 +119,66 @@
serials=serials)
class BTreesConflictError(ConflictError):
- """A special subclass for BTrees conflict errors.
+ """A special subclass for BTrees conflict errors."""
- These return an undocumented four-tuple.
- """
- def __init__(self, *btree_args):
- ConflictError.__init__(self, message="BTrees conflict error")
- self.btree = btree_args
+ msgs = [# 0; i2 or i3 bucket split; positions are all -1
+ 'Conflicting bucket split',
+
+ # 1; keys the same, but i2 and i3 values differ, and both values
+ # differ from i1's value
+ 'Conflicting changes',
+
+ # 2; i1's value changed in i2, but key+value deleted in i3
+ 'Conflicting delete and change',
+
+ # 3; i1's value changed in i3, but key+value deleted in i2
+ 'Conflicting delete and change',
+
+ # 4; i1 and i2 both added the same key, or both deleted the
+ # same key
+ 'Conflicting inserts or deletes',
+
+ # 5; i2 and i3 both deleted the same key
+ 'Conflicting deletes',
+
+ # 6; i2 and i3 both added the same key
+ 'Conflicting inserts',
+
+ # 7; i2 and i3 both deleted the same key, or i2 changed the value
+ # associated with a key and i3 deleted that key
+ 'Conflicting deletes, or delete and change',
+
+ # 8; i2 and i3 both deleted the same key, or i3 changed the value
+ # associated with a key and i2 deleted that key
+ 'Conflicting deletes, or delete and change',
+
+ # 9; i2 and i3 both deleted the same key
+ 'Conflicting deletes',
+
+ # 10; i2 and i3 deleted all the keys, and didn't insert any,
+ # leaving an empty bucket; conflict resolution doesn't have
+ # enough info to unlink an empty bucket from its containing
+ # BTree correctly
+ 'Empty bucket from deleting all keys',
+
+ # 11; conflicting changes in an internal BTree node
+ 'Conflicting changes in an internal BTree node',
+ ]
+
+ def __init__(self, p1, p2, p3, reason):
+ self.p1 = p1
+ self.p2 = p2
+ self.p3 = p3
+ self.reason = reason
+
+ def __repr__(self):
+ return "BTreesConflictError(%d, %d, %d, %d)" % (self.p1,
+ self.p2,
+ self.p3,
+ self.reason)
+ def __str__(self):
+ return "BTrees conflict error at %d/%d/%d: %s" % (
+ self.p1, self.p2, self.p3, self.msgs[self.reason])
class DanglingReferenceError(TransactionError):
"""An object has a persistent reference to a missing object.
More information about the Zodb-checkins
mailing list