[tahoe-lafs-trac-stream] [tahoe-lafs] #679: /storage emitting exception - lease reporting code
tahoe-lafs
trac at tahoe-lafs.org
Tue Nov 20 00:48:04 UTC 2012
#679: /storage emitting exception - lease reporting code
-----------------------------------+----------------------------------
Reporter: terrell | Owner: davidsarah
Type: defect | Status: assigned
Priority: major | Milestone: undecided
Component: code-frontend-web | Version: 1.3.0
Resolution: | Keywords: leases error crawler
Launchpad Bug: |
-----------------------------------+----------------------------------
Changes (by davidsarah):
* keywords: leases error heisenbug => leases error crawler
* owner: => davidsarah
* status: new => assigned
Old description:
> This exception appeared a few times just after a recompile and restart of
> the server -- running on r3833.
>
> After a few minutes (6 or so), a simple refresh of /storage rendered
> correctly and this error was not seen again.
>
> {{{
> 2009-04-09 04:54:07.804Z [HTTPChannel,3,127.0.0.1] Unhandled Error
> Traceback (most recent call last):
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/rend.py", line 568, in
> _renderHTTP
> return self.flattenFactory(doc, ctx, writer, finisher)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/rend.py", line 527, in
> <lambda>
> flattenFactory = lambda self, *args:
> flat.flattenFactory(*args)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/__init__.py", line 14,
> in flattenFactory
> return deferflatten(stan, ctx, writer).addCallback(finisher)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/twist.py", line 63, in
> deferflatten
> _drive(iterable, finished)
> --- <exception caught here> ---
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/twist.py", line 24, in
> _drive
> next = iterable.next()
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 83, in
> iterflatten
> for item in gen:
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/flatstan.py", line 103,
> in TagSerializer
> yield serialize(toBeRenderedBy, context)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 70, in
> serialize
> return partialflatten(context, obj)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 61, in
> partialflatten
> return flattener(obj, context)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/flatstan.py", line 264,
> in DirectiveSerializer
> return serialize(renderer, context)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 70, in
> serialize
> return partialflatten(context, obj)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 61, in
> partialflatten
> return flattener(obj, context)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/flatstan.py", line 247,
> in MethodSerializer
> return FunctionSerializer(original, context, nocontext)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5
> /site-packages/Nevow-0.9.32-py2.5.egg/nevow/flat/flatstan.py", line 236,
> in FunctionSerializer
> result = original(context, data)
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/src/allmydata/web/storage.py",
> line 242, in render_lease_last_cycle_results
> self.format_recovered(last["space-recovered"], "actual")
> File
> "/Users/trel/Desktop/tahoestuff/tahoefromdarcs/src/allmydata/web/storage.py",
> line 159, in format_recovered
> (maybe(sr["%s-shares" % a]),
> exceptions.KeyError: 'actual-shares'
> }}}
New description:
This exception appeared a few times just after a recompile and restart of
the server -- running on r3833.
After a few minutes (6 or so), a simple refresh of /storage rendered
correctly and this error was not seen again.
{{{
2009-04-09 04:54:07.804Z [HTTPChannel,3,127.0.0.1] Unhandled Error
Traceback (most recent call last):
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/rend.py", line 568, in _renderHTTP
return self.flattenFactory(doc, ctx, writer, finisher)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/rend.py", line 527, in <lambda>
flattenFactory = lambda self, *args:
flat.flattenFactory(*args)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/__init__.py", line 14, in
flattenFactory
return deferflatten(stan, ctx, writer).addCallback(finisher)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/twist.py", line 63, in
deferflatten
_drive(iterable, finished)
--- <exception caught here> ---
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/twist.py", line 24, in _drive
next = iterable.next()
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 83, in
iterflatten
for item in gen:
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/flatstan.py", line 103, in
TagSerializer
yield serialize(toBeRenderedBy, context)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 70, in serialize
return partialflatten(context, obj)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 61, in
partialflatten
return flattener(obj, context)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/flatstan.py", line 264, in
DirectiveSerializer
return serialize(renderer, context)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 70, in serialize
return partialflatten(context, obj)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/ten.py", line 61, in
partialflatten
return flattener(obj, context)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/flatstan.py", line 247, in
MethodSerializer
return FunctionSerializer(original, context, nocontext)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/support/lib/python2.5/site-
packages/Nevow-0.9.32-py2.5.egg/nevow/flat/flatstan.py", line 236, in
FunctionSerializer
result = original(context, data)
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/src/allmydata/web/storage.py",
line 242, in render_lease_last_cycle_results
self.format_recovered(last["space-recovered"], "actual")
File
"/Users/trel/Desktop/tahoestuff/tahoefromdarcs/src/allmydata/web/storage.py",
line 159, in format_recovered
(maybe(sr["%s-shares" % a]),
exceptions.KeyError: 'actual-shares'
}}}
--
Comment:
I don't think this is actually a heisenbug, I think it's just that the
{{{actual-shares}}} field isn't being initialized until the lease crawler
is run. This bug ''might'' survive the transition to leasedb, since the
new accounting crawler code is based quite closely on the old lease
crawler code.
I'm slightly confused because I thought there already was a test that the
status page renders correctly before the lease crawler is run. But if not,
we should add one.
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/679#comment:3>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list