From: Brian Warner Date: Fri, 5 Dec 2008 22:54:12 +0000 (-0700) Subject: misc/cpu-watcher.tac: tolerate disk-full errors when writing the pickle, and pickle... X-Git-Url: https://git.rkrishnan.org/pf/content/en/(%5B%5E?a=commitdiff_plain;h=6ec352fe926b3335e6ae3c5e6b28bfb6d334d325;p=tahoe-lafs%2Ftahoe-lafs.git misc/cpu-watcher.tac: tolerate disk-full errors when writing the pickle, and pickle corruption from earlier disk-full errors --- diff --git a/misc/cpu-watcher.tac b/misc/cpu-watcher.tac index 9695a694..12f29324 100644 --- a/misc/cpu-watcher.tac +++ b/misc/cpu-watcher.tac @@ -104,7 +104,7 @@ class CPUWatcher(service.MultiService, resource.Resource, Referenceable): resource.Resource.__init__(self) try: self.history = pickle.load(open("history.pickle", "rb")) - except EnvironmentError: + except: self.history = {} self.current = [] self.observers = set() @@ -199,8 +199,11 @@ class CPUWatcher(service.MultiService, resource.Resource, Referenceable): except: log.msg("error reading process %s (%s), ignoring" % (pid, name)) log.err() - pickle.dump(self.history, open("history.pickle.tmp", "wb")) - os.rename("history.pickle.tmp", "history.pickle") + try: + pickle.dump(self.history, open("history.pickle.tmp", "wb")) + os.rename("history.pickle.tmp", "history.pickle") + except: + pass for (pid, name) in processes: row = [name] for avg in self.AVERAGES: