Opened at 2007-12-18T23:58:37Z
Last modified at 2010-11-30T16:24:36Z
#237 closed defect
webish directory page can't display more than 192 children — at Version 1
Reported by: | warner | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 0.8.0 (Allmydata 3.0 Beta) |
Component: | code-frontend-web | Version: | 0.7.0 |
Keywords: | twisted deferred | Cc: | |
Launchpad Bug: |
Description (last modified by warner)
While doing some load testing (which involves writing lots and lots of files into a few directories), I discovered an exception when using the webish interface to list one of these large directories. The exception came out of nevow as it attempted to render the 193rd child of the directory:
2007-12-18 23:48:36.611Z [-] Unhandled Error Traceback (most recent call last): File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 191, in addCallback callbackKeywords=kw) File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 182, in addCallbacks self._runCallbacks() File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 317, in _runCallbacks self.result = callback(self.result, *args, **kw) File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/twist.py", line 41, in cb _drive(iterable, finished) --- <exception caught here> --- File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/twist.py", line 23, in _drive next = iterable.next() File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/ten.py", line 83, in iterflatten for item in gen: File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/flatstan.py", line 103, in TagSerializer yield serialize(toBeRenderedBy, context) File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/ten.py", line 70, in serialize return partialflatten(context, obj) File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/ten.py", line 61, in partialflatten return flattener(obj, context) File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/flatstan.py", line 262, in DirectiveSerializer return serialize(renderer, context) File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/ten.py", line 70, in serialize return partialflatten(context, obj) File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/ten.py", line 61, in partialflatten return flattener(obj, context) File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/flatstan.py", line 245, in MethodSerializer return FunctionSerializer(original, context, nocontext) File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-packages/Nevow-0.9.0-py2.5.egg/nevow/flat/flatstan.py", line 234, in FunctionSerializer result = original(context, data) File "/home/amduser/tahoe-loadnet/source/src/allmydata/webish.py", line 227, in render_row ctx.fillSlots("size", target.get_size()) File "/home/amduser/tahoe-loadnet/source/src/allmydata/filenode.py", line 25, in get_size return IFileURI(self.uri).get_size() File "/usr/lib/python2.5/site-packages/twisted/python/components.py", line 113, in _hook return factory(ob) File "/home/amduser/tahoe-loadnet/source/src/allmydata/uri.py", line 428, in from_string_filenode u = from_string(s) File "/home/amduser/tahoe-loadnet/source/src/allmydata/uri.py", line 391, in from_string return CHKFileURI().init_from_string(s) File "/home/amduser/tahoe-loadnet/source/src/allmydata/uri.py", line 52, in init_from_string self.key = idlib.a2b(key_s) File "/home/amduser/tahoe-loadnet/source/src/allmydata/util/idlib.py", line 190, in a2b precondition(could_be_base32_encoded(cs), "cs is required to be possibly base32 encoded data.", cs=cs) exceptions.RuntimeError: maximum recursion depth exceeded
I'm not sure if there is actual recursion taking place.. it may just be a function that's returning defer.succeed(result) and this basically surprises some other piece of code that doesn't expect the Deferred to fire so quickly.
Note: See
TracTickets for help on using
tickets.
hrm, the exception got mangled during pasting..