[Grok-dev] zope.sqlalchemy explodes because of new SQLAlchemy
Brandon Craig Rhodes
brandon at rhodesmill.org
Thu Jun 26 15:07:12 EDT 2008
In case this helps any of the rest of you, especially those who might be
using megrok.rdb (which uses zope.sqlalchemy, right?): they seem to have
released some SQLAlchemy eggs for the upcoming 0.5 beta, which when
combined with zope.sqlalchemy break non-deterministicly. One symptom is:
...
File "/home/brandon/IamAPI/test/eggs/SQLAlchemy-0.5.0beta1-py2.5.egg/sqlalchemy/orm/session.py", line 329, in _connection_for_bind
self.session.extension.after_begin(self.session, self, conn)
File "/home/brandon/IamAPI/test/eggs/zope.sqlalchemy-0.1-py2.5.egg/zope/sqlalchemy/datamanager.py", line 184, in after_begin
join_transaction(session, self.initial_state)
File "/home/brandon/IamAPI/test/eggs/zope.sqlalchemy-0.1-py2.5.egg/zope/sqlalchemy/datamanager.py", line 165, in join_transaction
zope_transaction.get().join(DataManager(session, initial_state))
File "/home/brandon/IamAPI/test/eggs/zope.sqlalchemy-0.1-py2.5.egg/zope/sqlalchemy/datamanager.py", line 46, in __init__
if session.transactional:
AttributeError: 'Session' object has no attribute 'transactional'
Another symptom is:
File "/home/brandon/IamAPI/test/eggs/SQLAlchemy-0.5.0beta1-py2.5.egg/sqlalchemy/orm/session.py", line 1392, in flush
self.extension.after_flush(self, flush_context)
File "/home/brandon/IamAPI/test/eggs/zope.sqlalchemy-0.1-py2.5.egg/zope/sqlalchemy/datamanager.py", line 187, in after_flush
invalidate(session)
File "/home/brandon/IamAPI/test/eggs/zope.sqlalchemy-0.1-py2.5.egg/zope/sqlalchemy/datamanager.py", line 170, in invalidate
assert _SESSION_STATE[id(session)] is not STATUS_READONLY
KeyError: 3049156876L
If you see these errors, as I did today, then the solution seems to be
editing the setup.py of your application and writing:
install_requires=['setuptools',
# Add extra requirements here
'SQLAlchemy==0.4.6',
'zope.sqlalchemy',
...
That way, before zope.sqlalchemy is consulted for its dependencies,
buildout (or setuptools?) will go ahead and download and install a
version of SQLAlchemy that works with zope.sqlalchemy.
Having downgraded SQLAlchemy to 0.4.6, I have now seen more than an hour
of stable operation. Should that change, and it wasn't the version
difference that broke me, then I'll reply to this email with a
retraction; but the version difference was the only difference I could
find between to instances I had of my installation, one of which worked
and the other of which did not.
--
Brandon Craig Rhodes brandon at rhodesmill.org http://rhodesmill.org/brandon
More information about the Grok-dev
mailing list