[Zope-dev] Re: Zope 3 on Python 2.5, Zope 3 releases
Tres Seaver
tseaver at palladion.com
Sun Jul 13 13:10:55 EDT 2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Tres Seaver wrote:
> Lorenzo Gil Sánchez wrote:
>> Here is the traceback information:
>
>> 2008-07-13T10:44:37 ERROR SiteError http://127.0.0.1:8080/@@index.html
>> Traceback (most recent call last):
>> File
>> "/home/lgs/z3env25/eggs/tmpbLKU14/zope.publisher-3.5.3-py2.5.egg/zope/publisher/publish.py", line 133, in publish
>> File
>> "/home/lgs/z3env25/eggs/tmpaC6Rf5/zope.app.publication-3.4.3-py2.5.egg/zope/app/publication/zopepublication.py", line 167, in callObject
>> File
>> "/home/lgs/z3env25/eggs/tmpbLKU14/zope.publisher-3.5.3-py2.5.egg/zope/publisher/publish.py", line 108, in mapply
>> - __traceback_info__: <bound method Contents.index of
>> <zope.app.publisher.browser.viewmeta.Contents object at 0x7f0b7de06990>>
>> File
>> "/home/lgs/z3env25/eggs/tmpbLKU14/zope.publisher-3.5.3-py2.5.egg/zope/publisher/publish.py", line 114, in debug_call
>> File
>> "/home/lgs/z3env25/eggs/tmp8cmA1c/zope.app.container-3.6.0-py2.5-linux-x86_64.egg/zope/app/container/browser/contents.py", line 443, in index
>> File
>> "/home/lgs/z3env25/eggs/tmp6KzCKG/zope.app.pagetemplate-3.4.0-py2.5.egg/zope/app/pagetemplate/viewpagetemplatefile.py", line 83, in __call__
>> File
>> "/home/lgs/z3env25/eggs/tmp6KzCKG/zope.app.pagetemplate-3.4.0-py2.5.egg/zope/app/pagetemplate/viewpagetemplatefile.py", line 51, in __call__
>> File
>> "/home/lgs/z3env25/eggs/tmprTDkjU/zope.pagetemplate-3.4.0-py2.5.egg/zope/pagetemplate/pagetemplate.py", line 115, in pt_render
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 271, in __call__
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 343, in interpret
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 888, in do_useMacro
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 343, in interpret
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 533, in do_optTag_tal
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 518, in do_optTag
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 513, in no_tag
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 343, in interpret
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 858, in do_defineMacro
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 343, in interpret
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 954, in do_defineSlot
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 343, in interpret
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 946, in do_defineSlot
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 343, in interpret
>> File
>> "/home/lgs/z3env25/eggs/tmpjL9hPq/zope.tal-3.5.0-py2.5.egg/zope/tal/talinterpreter.py", line 819, in do_loop_tal
>> File
>> "/home/lgs/z3env25/eggs/tmpXUllta/zope.tales-3.4.0-py2.5.egg/zope/tales/tales.py", line 682, in setRepeat
>> File
>> "/home/lgs/z3env25/eggs/tmpXUllta/zope.tales-3.4.0-py2.5.egg/zope/tales/tales.py", line 696, in evaluate
>
>> - /home/lgs/z3env25/eggs/zope.app.container-3.6.0-py2.5-linux-x86_64.egg/zope/app/container/browser/index.pt
>> - Line 36, Column 6
>> - Expression: <PathExpr standard:u'view/listContentInfo'>
>> - Names:
>> {'args': (),
>> 'context': <zope.app.folder.folder.Folder object at
>> 0x7f0b7e9762a8>,
>> 'default': <object object at 0x7f0b8a11c290>,
>> 'loop': {},
>> 'nothing': None,
>> 'options': {},
>> 'repeat': {},
>> 'request': <zope.publisher.browser.BrowserRequest instance
>> URL=http://127.0.0.1:8080/@@index.html>,
>> 'template':
>> <zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object
>> at 0x7f0b8122d110>,
>> 'view': <zope.app.publisher.browser.viewmeta.Contents object at
>> 0x7f0b7de06990>,
>> 'views': <zope.app.pagetemplate.viewpagetemplatefile.ViewMapper
>> object at 0x7f0b7de06a10>}
>> File
>> "/home/lgs/z3env25/eggs/tmpXUllta/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py", line 217, in __call__
>> File
>> "/home/lgs/z3env25/eggs/tmpXUllta/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py", line 211, in _eval
>> File
>> "/home/lgs/z3env25/eggs/tmp8cmA1c/zope.app.container-3.6.0-py2.5-linux-x86_64.egg/zope/app/container/browser/contents.py", line 97, in listContentInfo
>> File
>> "/home/lgs/z3env25/eggs/tmp8cmA1c/zope.app.container-3.6.0-py2.5-linux-x86_64.egg/zope/app/container/browser/contents.py", line 123, in _normalListContentsInfo
>> MemoryError
>
>
>> Steps to reproduce this problem:
>
>> virtualenv --no-site-packages z3env25
>> cd z3env25
>> . bin/activate
>> easy_install zopeproject
>> zopeproject HelloWorld
>> cd HelloWorld
>> bin/paster serve deploy.ini
>
>
>> I tried to go further and discover the source of this problem adding a
>> breakpoint just before the exception is raised. This is what I got:
>
>> (Pdb) self.context
>> <zope.app.folder.folder.Folder object at 0x7faf532e4320>
>> (Pdb) self.context.keys()
>> <OOBTreeItems object at 0x7faf52682030>
>> (Pdb) tuple(self.context.keys())
>> *** MemoryError:
>> (Pdb) self.context.values()
>> <OOBTreeItems object at 0x7faf52682130>
>> (Pdb) tuple(self.context.values())
>> *** MemoryError:
>
>> So, it may be a ZODB issue.
>
> Your container has too many items in it: the 'keys', 'items', and
> 'values' methods of the BTree classes all return generators for exactly
> this reason.
To follow up: 'zope.app.container.browser.contents' has the bug:
'Contents._normalListContentsInfo' calls 'map(self._extractContentInfo,
self.context.items)', which won't scale for arbitrarily-large
containers. In such cases, you need a contents view which creates /
operates on batches.
Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFIejcf+gerLs4ltQ4RAhHOAJ0RWqXxIZwcM6YNdcAOHeUv8ByzNwCfb7vk
QudgQxiPZhMCtNFufP2Wwkg=
=ZB71
-----END PGP SIGNATURE-----
More information about the Zope-Dev
mailing list