[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