#561 closed defect (fixed)

cpu-watcher not resilient to corrupted pickles

Reported by: zandr Owned by:
Priority: major Milestone: undecided
Component: code-nodeadmin Version: 1.2.0
Keywords: error cpu-watcher statistics easy reliability pickle Cc:
Launchpad Bug:

Description (last modified by daira)

I've seen a number of EOF errors trying to read the pickle, which seems like it should be pretty easy to trap.

This one, however, stumped me. First, I got:

amduser@prodtahoe1:~/prodnet/cpu-watcher$ tahoe start .
STARTING /home/amduser/prodnet/cpu-watcher

Failed to load application: '9'
unknown (cpu-watcher.tac) node probably not started

Zooko helpfully suggested I try:

amduser@prodtahoe1:~/prodnet/cpu-watcher$ python -u cpu-watcher.tac
Traceback (most recent call last):
  File "cpu-watcher.tac", line 227, in <module>
    CPUWatcher().setServiceParent(application)
  File "cpu-watcher.tac", line 106, in __init__
    self.history = pickle.load(open("history.pickle", "rb"))
  File "/usr/lib/python2.5/pickle.py", line 1370, in load
    return Unpickler(file).load()
  File "/usr/lib/python2.5/pickle.py", line 858, in load
    dispatch[key](self)
KeyError: '9'

Deleting the pickle solved the problem.

Change History (6)

comment:1 Changed at 2009-03-08T21:59:32Z by warner

  • Component changed from unknown to code-nodeadmin
  • Owner nobody deleted

comment:2 Changed at 2010-03-25T01:12:41Z by davidsarah

  • Keywords error cpu-watcher statistics added

comment:3 Changed at 2010-10-09T14:46:15Z by zooko

  • Keywords easy reliability added

comment:4 Changed at 2011-01-04T02:17:22Z by davidsarah

See also #1290 (replace all use of pickles with JSON).

comment:5 Changed at 2014-01-17T23:27:22Z by daira

  • Description modified (diff)
  • Keywords pickle added

comment:6 Changed at 2016-11-21T20:34:52Z by rvs

  • Resolution set to fixed
  • Status changed from new to closed

This appears to be already fixed: all calls to pickle in cpu-watcher.tac are wrapped in try-except.

Note: See TracTickets for help on using tickets.