From 8b4a0a157ef21cbcedd7ad883b1ad062d484a154 Mon Sep 17 00:00:00 2001
From: Daira Hopwood <daira@jacaranda.org>
Date: Thu, 5 Sep 2013 19:15:22 +0100
Subject: [PATCH] Mon Jul  2 19:15:55 BST 2012  david-sarah@jacaranda.org   *
 If a stats.pickle file cannot be read, print a better error message.

---
 src/allmydata/stats.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/allmydata/stats.py b/src/allmydata/stats.py
index 5c1cdb3d..ea0a7f85 100644
--- a/src/allmydata/stats.py
+++ b/src/allmydata/stats.py
@@ -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 = {}
-- 
2.45.2