If a stats.pickle file cannot be read, print a better error message.
authordavid-sarah <david-sarah@jacaranda.org>
Mon, 2 Jul 2012 18:15:55 +0000 (18:15 +0000)
committerdavid-sarah <david-sarah@jacaranda.org>
Mon, 2 Jul 2012 18:15:55 +0000 (18:15 +0000)
src/allmydata/stats.py

index 5c1cdb3d87b8b8fb034cea38acefc8587aae264c..ea0a7f85d850dacd74584ecdfa3dd2e5e08d8155 100644 (file)
@@ -12,6 +12,7 @@ from zope.interface import implements
 from foolscap.api import eventually, DeadReferenceError, Referenceable, Tub
 
 from allmydata.util import log
+from allmydata.util.encodingutil import quote_output
 from allmydata.interfaces import RIStatsProvider, RIStatsGatherer, IStatsProducer
 
 class LoadMonitor(service.MultiService):
@@ -252,7 +253,12 @@ class PickleStatsGatherer(StdOutStatsGatherer):
 
         if os.path.exists(self.picklefile):
             f = open(self.picklefile, 'rb')
-            self.gathered_stats = pickle.load(f)
+            try:
+                self.gathered_stats = pickle.load(f)
+            except Exception:
+                print ("Error while attempting to load pickle file %s.\nYou may need to delete this file.\n" %
+                       quote_output(os.path.abspath(self.picklefile)))
+                raise
             f.close()
         else:
             self.gathered_stats = {}