[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