[Zope] ZCatalog and LoginManager - be aware.

Michel Pelletier michel@digicool.com
Tue, 28 Nov 2000 15:12:03 -0800


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