﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	launchpad_bug
237	webish directory page can't display more than 192 children	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.
"	defect	new	major	undecided	code-frontend-web	0.7.0				
