[Checkins] SVN: relstorage/trunk/relstorage/adapters/packundo.py IISets are signed integers, so fall back to standard Python sets.

Shane Hathaway shane at hathawaymix.org
Wed Feb 2 10:04:47 EST 2011


Log message for revision 120052:
  IISets are signed integers, so fall back to standard Python sets.
  

Changed:
  U   relstorage/trunk/relstorage/adapters/packundo.py

-=-
Modified: relstorage/trunk/relstorage/adapters/packundo.py
===================================================================
--- relstorage/trunk/relstorage/adapters/packundo.py	2011-02-02 14:44:19 UTC (rev 120051)
+++ relstorage/trunk/relstorage/adapters/packundo.py	2011-02-02 15:04:46 UTC (rev 120052)
@@ -14,21 +14,12 @@
 """Pack/Undo implementations.
 """
 
-import BTrees
 from relstorage.adapters.interfaces import IPackUndo
 from ZODB.POSException import UndoError
 from zope.interface import implements
 import logging
 import time
 
-try:
-    IISet = BTrees.family64.II.Set
-    difference = BTrees.family64.II.difference
-except AttributeError:
-    # Fall back to old BTrees with no special support for 64 bit integers
-    from BTrees.OOBTree import OOSet as IISet
-    from BTrees.OOBTree import difference
-
 log = logging.getLogger(__name__)
 
 
@@ -78,7 +69,7 @@
         log.info("pre_pack: downloading pack_object and object_ref.")
 
         # Download the list of root objects to keep from pack_object.
-        keep_set = IISet()  # set([oid])
+        keep_set = set()  # set([oid])
         stmt = """
         SELECT zoid
         FROM pack_object
@@ -86,10 +77,9 @@
         """
         self.runner.run_script_stmt(cursor, stmt)
         for from_oid, in cursor:
-            keep_set.insert(from_oid)
+            keep_set.add(from_oid)
 
         # Download the list of object references into all_refs.
-        # Use IISets to minimize RAM consumption.
         all_refs = {}  # {from_oid: set([to_oid])}
         stmt = """
         SELECT object_ref.zoid, object_ref.to_zoid
@@ -103,29 +93,29 @@
         for from_oid, to_oid in cursor:
             if current_oid is None:
                 current_oid = from_oid
-                current_refs = IISet()  # set([to_oid])
+                current_refs = set()  # set([to_oid])
             elif current_oid != from_oid:
                 all_refs[current_oid] = current_refs
                 current_oid = from_oid
-                current_refs = IISet()
-            current_refs.insert(to_oid)
+                current_refs = set()
+            current_refs.add(to_oid)
         if current_oid is not None:
             all_refs[current_oid] = current_refs
 
         # Traverse the object graph.  Add all of the reachable OIDs
         # to keep_set.
         log.info("pre_pack: traversing the object graph.")
-        parents = IISet()
+        parents = set()
         parents.update(keep_set)
         pass_num = 0
         while parents:
             pass_num += 1
-            children = IISet()
+            children = set()
             for parent in parents:
                 to_oids = all_refs.get(parent)
                 if to_oids:
                     children.update(to_oids)
-            parents = difference(children, keep_set)
+            parents = children.difference(keep_set)
             keep_set.update(parents)
             log.info("pre_pack: found %d more referenced object(s) in "
                 "pass %d", len(parents), pass_num)



More information about the checkins mailing list