durusmail: durus-users: [PATCH] minor cleanup
[PATCH] minor cleanup
[PATCH] minor cleanup
2006-10-02
[PATCH] minor cleanup
John Belmonte
2006-10-02
While hacking at Durus I accumulated a few fixes that shouldn't be too
controversial:

  * fix typo in Connection.get_stored_pickle docstring
  * fix copy & paste error in utils.u32 docstring
  * eliminate hard-coded enum value in Cache.get_instance

There was another change I wanted to make, which was to derive a
specific WriteConflictError from ConflictError, and fix the
ConflictError docstring to not describe a write conflict.  Applications
may want to distinguish between write and read conflicts, for example to
retry a different number of times for each.  However, a few points where
conflict errors are currently raised threw me off.  Perhaps these two
cases should just be an assert rather than raising an (already raised)
conflict, since they indicated a programming error:

  == Connection.get_stored_pickle() ==
      if oid in self.invalid_oids:
          # someone is still trying to read after getting a conflict
          raise ReadConflictError([oid])

  == Connection.commit() ==
      if self.invalid_oids:
          # someone is trying to commit after a read or write conflict
          raise ConflictError(list(self.invalid_oids))

--John
diff -urN Durus-3.5.orig/connection.py Durus-3.5/connection.py
--- Durus-3.5.orig/connection.py        2006-08-01 16:21:11.000000000 -0400
+++ Durus-3.5/connection.py     2006-10-01 22:09:16.000000000 -0400
@@ -5,7 +5,7 @@
 from heapq import heappush, heappop
 from durus.error import ConflictError, ReadConflictError, DurusKeyError
 from durus.logger import log
-from durus.persistent import ConnectionBase
+from durus.persistent import ConnectionBase, GHOST
 from durus.persistent_dict import PersistentDict
 from durus.serialize import ObjectReader, ObjectWriter
 from durus.serialize import split_oids, unpack_record, pack_record
@@ -96,7 +96,7 @@
     def get_stored_pickle(self, oid):
         """(oid:str) -> str
         Retrieve the pickle from storage.  Will raise ReadConflictError if
-        pickle the pickle is invalid.
+        the pickle is invalid.
         """
         if oid in self.invalid_oids:
             # someone is still trying to read after getting a conflict
@@ -346,7 +346,7 @@
             obj = klass.__new__(klass)
             obj._p_oid = oid
             obj._p_connection = connection
-            obj._p_status = -1 # obj._p_set_status_ghost()
+            obj._p_status = GHOST # obj._p_set_status_ghost()
             objects[oid] = obj
         return obj

diff -urN Durus-3.5.orig/utils.py Durus-3.5/utils.py
--- Durus-3.5.orig/utils.py     2006-05-11 08:45:36.000000000 -0400
+++ Durus-3.5/utils.py  2006-10-01 21:45:55.000000000 -0400
@@ -23,6 +23,6 @@
     return struct.pack(">L", v)

 def u32(v):
-    """Unpack an 8-byte string into a 32-bit long integer."""
+    """Unpack an 4-byte string into a 32-bit long integer."""
     return struct.unpack(">L", v)[0]

reply