ZCatalog and LoginManager - be aware.
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). 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? Another question, why did the above also fail although I didn't restrict any viewer permissions when searching? (i.e. why got LoginManagers ZSQL-Methods started at all?). cheers, oliver
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
The problem is that one of your databases doesn't define the commit_sub() and abort_sub() methods on the DB class it exposes. You don't say which SQL database you're using, but this happened to me on a consulting project with ZOracleDA. A solution is to add the following methods to the database adapter's DB class inside DB.py: def commit_sub(self, *arg, **kw): pass def abort_sub(self, *arg, **kw): pass This isn't optimal, because it sort of breaks transactional integrity, but it does make it work. ----- Original Message ----- From: "Michel Pelletier" <michel@digicool.com> To: "Oliver Bleutgen" <myzope@gmx.net> Cc: <zope@zope.org> Sent: Tuesday, November 28, 2000 6:12 PM Subject: Re: [Zope] ZCatalog and LoginManager - be aware.
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
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
participants (3)
-
Chris McDonough -
Michel Pelletier -
Oliver Bleutgen