Oliver Bleutgen wrote:
Hi,
I just wanted to mention a IMO bad pitfall when using ZCatalog, for the sake of sparing others some time.
I'm running Zope 2.2.2 with LoginManager with SQL in a subfolder and was getting the following error when trying to find dtml-documents into ZCatalog:
Error Type: AttributeError Error Value: commit_sub
Traceback (innermost last): File /home/local-extranet/web/zope3/Zope-2.2.2-src/lib/python/ZPublisher/Publish.py, line 222, in publish_module File /home/local-extranet/web/zope3/Zope-2.2.2-src/lib/python/ZPublisher/Publish.py, line 187, in publish File /home/local-extranet/web/zope3/Zope-2.2.2-src/lib/python/Zope/__init__.py, line 221, in zpublisher_exception_hook (Object: Traversable) File /home/local-extranet/web/zope3/Zope-2.2.2-src/lib/python/ZPublisher/Publish.py, line 175, in publish File /home/local-extranet/web/zope3/Zope-2.2.2-src/lib/python/Zope/__init__.py, line 235, in commit File /home/local-extranet/web/zope3/Zope-2.2.2-src/lib/python/ZODB/Transaction.py, line 261, in commit AttributeError: (see above)
All other object-types (incuding dtml-methods) seem to work. I have put no restrictions on which files I want found, but restricting something to reduce the number of found objects helps.
I fiddled around somewhat and discovered that disabling subtransactions in ZCatalog does help (required for using ZSQL Methods and ZCatalog in the same transaction).
Yeah, that sux. I think this is a known limitation. I'm not sure.
Now I use SQL-based LoginManager, but why on earth did it only fail on DTML-Documents? Is it because I have much more of them so only then ZCatalog's subtransactions come into play?
Probably because sub transactions are only commited after a certain number of words or values are indexed, and your DTML documents were the only things that held words. -Michel