diff options
Diffstat (limited to 'lorrycontroller')
-rw-r--r-- | lorrycontroller/workingstate.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lorrycontroller/workingstate.py b/lorrycontroller/workingstate.py index 9a99004..082647e 100644 --- a/lorrycontroller/workingstate.py +++ b/lorrycontroller/workingstate.py @@ -53,11 +53,26 @@ class WorkingStateManager(object): return self def __exit__(self, exctype, excvalue, exctraceback): + self.purge_dead_troves() if not self.app.settings['dry-run']: self.save_state() else: logging.debug("DRY-RUN: Not saving state again") + def purge_dead_troves(self): + old_trove_count = len(self.trove_state.keys()) + all_troves = self.trove_state + self.trove_state = {} + new_trove_count = 0 + for trove in self.app.conf.troves: + uuid = trove['uuid'] + self.trove_state[uuid] = trove + new_trove_count += 1 + if old_trove_count != new_trove_count: + trove_diff = old_trove_count - new_trove_count + logging.info("Purged %d dead trove entr%s from the state file" % ( + trove_diff, ("y" if trove_diff == 1 else "ies"))) + def _load_state(self): self.lorry_state_file = os.path.join(self.workdir, "last-lorry-state.json") |