diff options
author | Siddharth Ravikumar <sravik@bgsu.edu> | 2015-04-30 15:02:36 -0400 |
---|---|---|
committer | Siddharth Ravikumar <sravik@bgsu.edu> | 2015-04-30 15:02:36 -0400 |
commit | 2925bf8cacfd7716639e0177f444140928ed0c9a (patch) | |
tree | 7bf4db3bef5208746a9f95ff26bc8a22fb5da04a /combox | |
parent | bcf127e0472aec90a1569c4bfd9f1c86db88283e (diff) |
Updated combox.events.NodeDirMonitor.housekeep's delete functionality.
- Now the housekeep method deletes the file in the combox
directory only if all of its shards are missing in the
respective node directories -- meaning it was deleted on another
computer (running combox).
- If it finds only some of all the shards of a file missing, it
stores this information in the `file_deleted' dict inside
the silo.
- tests.events_tests.TestEvents.test_NDM_housekeep_delete tests
the delete functionality of
combox.events.NodeDirMonitor.housekeep method.
modified: combox/events.py
modified: tests/events_test.py
Diffstat (limited to 'combox')
-rw-r--r-- | combox/events.py | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/combox/events.py b/combox/events.py index 7026756..e15ea70 100644 --- a/combox/events.py +++ b/combox/events.py @@ -232,16 +232,22 @@ class NodeDirMonitor(LoggingEventHandler): fpaths = filter(fpath_filter, self.silo.keys()) for fpath in fpaths: - fshards = node_paths(fpath, self.config, True) - - for fshard in fshards: - if not path.exists(fshard): - # remove the file from combox directory. - rm_path(fpath) - print fpath, "was deleted on another computer. Removing it." - # update silo. - self.silo.remove(fpath) - break + del_num = 0 + fshards = node_paths(fpath, self.config, True) + + for fshard in fshards: + if not path.exists(fshard): + del_num += 1 + + if del_num == self.num_nodes: + # remove the file from combox directory. + rm_path(fpath) + print fpath, "was deleted on another computer. Removing it." + # update silo. + self.silo.remove(fpath) + self.silo.node_rem('file_deleted', fpath) + elif del_num > 0: + self.silo.node_set('file_deleted', fpath, del_num) for root, dirs, files in os.walk(get_nodedirs(self.config)[0]): for f in files: |