Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2008-12-02 13:43:01 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-12-02 13:43:01 (GMT)
commita488a1f039968851b324c1aead4a697d3606e8cd (patch)
tree4a747c6974c3a68dc5a9fb0976207590a32598a6
parent77357839cbe21f672f85c28cc80cd5c030945cc0 (diff)
Make the cheksum queue processor a bit more robust
-rw-r--r--src/olpc/datastore/optimizer.py25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/olpc/datastore/optimizer.py b/src/olpc/datastore/optimizer.py
index ed62e55..3cf69ee 100644
--- a/src/olpc/datastore/optimizer.py
+++ b/src/olpc/datastore/optimizer.py
@@ -122,19 +122,26 @@ class Optimizer(object):
if queue:
uid = queue[0]
logging.debug('_process_entry_cb processing %r' % uid)
+
file_in_entry_path = self._file_store.get_file_path(uid)
- checksum = self._calculate_md5sum(file_in_entry_path)
- self._metadata_store.set_property(uid, 'checksum', checksum)
+ if not os.path.exists(file_in_entry_path):
+ logging.info('non-existent entry in queue: %r' % uid)
+ else:
+ checksum = self._calculate_md5sum(file_in_entry_path)
+ self._metadata_store.set_property(uid, 'checksum', checksum)
- if self._identical_file_already_exists(checksum):
- if not self._already_linked(uid, checksum):
- existing_entry_uid = self._get_uid_from_checksum(checksum)
- self._file_store.hard_link_entry(uid, existing_entry_uid)
+ if self._identical_file_already_exists(checksum):
+ if not self._already_linked(uid, checksum):
+ existing_entry_uid = \
+ self._get_uid_from_checksum(checksum)
+ self._file_store.hard_link_entry(uid,
+ existing_entry_uid)
+
+ self._add_checksum_entry(uid, checksum)
+ else:
+ self._create_checksum_dir(checksum)
self._add_checksum_entry(uid, checksum)
- else:
- self._create_checksum_dir(checksum)
- self._add_checksum_entry(uid, checksum)
os.remove(os.path.join(queue_path, uid))