#237 closed defect

webish directory page can't display more than 192 children — at Initial Version

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

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:

<type 'exceptions.RuntimeError'>: maximum recursion depth exceeded
      8478 e3a8b071
      5209 e3b1a475
     16687 e50b1c9f
       358 e6987f72
      1306 e87980c6
      2474 ea522799
     10471 ec240057
     11205 ecd1f02e
      1306 ed43ad1c
     34177 ee143769
     10631 ee19da75
      4997 ee63f994
      2490 ef130749
     17256 efbc8ce1
       985 f007eea2
     32158 f01c9866
     14425 f0c87da8
       406 f0f8adeb
      6960 f1d55525
     58417 f229b2f7
      3696 f29996bf
     17328 f391e7bd
     13800 f4980b04
      2411 f5066714
       726 f52e4fd8
      2459 f56b1a96
      4507 f5cf24fc
      7808 f5fb619b
            return FunctionSerializer(original, context, nocontext)
          File "/home/amduser/tahoe-loadnet/source/support/lib/python2.5/site-pa
ckages/Nevow-0.9.0-py2.5.egg/nevow/flat/flatstan.py", line 234, in FunctionSeria
lizer
            result = original(context, data)
          File "/home/amduser/tahoe-loadnet/source/src/allmydata/webish.py", lin
e 227, in render_row
            ctx.fillSlots("size", target.get_size())
          File "/home/amduser/tahoe-loadnet/source/src/allmydata/filenode.py", l
ine 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 4
28, in from_string_filenode
            u = from_string(s)
          File "/home/amduser/tahoe-loadnet/source/src/allmydata/uri.py", line 3
91, in from_string
            return CHKFileURI().init_from_string(s)
          File "/home/amduser/tahoe-loadnet/source/src/allmydata/uri.py", line 5
2, 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 poss
ibly 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.

Change History (0)

Note: See TracTickets for help on using tickets.