Fix hash map PUT conflict.
authorAntony Chazapis <chazapis@gmail.com>
Wed, 7 Sep 2011 13:08:23 +0000 (16:08 +0300)
committerAntony Chazapis <chazapis@gmail.com>
Wed, 7 Sep 2011 13:08:23 +0000 (16:08 +0300)
pithos/backends/lib/hashfiler/blocker.py
pithos/backends/modular.py
pithos/backends/modular_alchemy.py
pithos/backends/simple.py

index 59fd31f..852ecd1 100644 (file)
@@ -98,12 +98,7 @@ class Blocker(object):
         """Check hashes for existence and
            return those missing from block storage.
         """
-        missing = []
-        append = missing.append
-        for i, h in enumerate(hashes):
-            if not self._check_rear_block(h):
-                append(i)
-        return missing
+        return [h for h in hashes if not self._check_rear_block(h)]
 
     def block_retr(self, hashes):
         """Retrieve blocks from storage by their hashes."""
index cec3412..0065f95 100644 (file)
@@ -478,7 +478,7 @@ class ModularBackend(BaseBackend):
         missing = self.blocker.block_ping([binascii.unhexlify(x) for x in hashmap])
         if missing:
             ie = IndexError()
-            ie.data = missing
+            ie.data = [binascii.hexlify(x) for x in missing]
             raise ie
         if permissions is not None:
             self._check_permissions(path, permissions)
index 954715b..471cf5b 100644 (file)
@@ -482,7 +482,7 @@ class AlchemyBackend(BaseBackend):
         missing = self.blocker.block_ping([binascii.unhexlify(x) for x in hashmap])
         if missing:
             ie = IndexError()
-            ie.data = missing
+            ie.data = [binascii.hexlify(x) for x in missing]
             raise ie
         if permissions is not None:
             self._check_permissions(path, permissions)
index 504af1b..c1a4ad8 100644 (file)
@@ -510,7 +510,7 @@ class SimpleBackend(BaseBackend):
         missing = self.blocker.block_ping([binascii.unhexlify(x) for x in hashmap])
         if missing:
             ie = IndexError()
-            ie.data = missing
+            ie.data = [binascii.hexlify(x) for x in missing]
             raise ie
         path = self._get_containerinfo(account, container)[0]
         path = '/'.join((path, name))