On Mar 14, 2011, at 6:14 PM, Ajay wrote:

> Thanks Mike for your quick response.
> 
> I removed the zope.sqlalchemy extension and I am no longer getting the
> zope error.
> 
> Since we are using a scoped_session, we don't think it's a threading
> issue although we are running in a multi-threaded env.
> 
> I am trying to create this exception to occur in my test env.
> 
> What state do we have to leave the Session object in - inorder to
> generate an 'InvalidRequestError' exception.
> Again, assuming that it is not a multithreaded concurrency issue given
> I am using sessions produced from ScopedSession.
> 
> My assumption is that since I am using ScopedSession, each thread gets
> it's own session object and session objects are not shared among
> threads.
> 
> Again appreciate your help with this.

the issue is just when an error occurs during flush, which results in a 
rollback of the transaction - the Session is then left in a state where it 
requires that you call rollback().   Any operations with the session before 
rollback is called will emit this exception.    The condition is not inherently 
related to threading, but can be a side effect of concurrent access to a single 
Session.






> 
> thanks!
> 
> Ajay
> 
> 
> 
> 
> On Mar 12, 11:38 am, Michael Bayer <mike...@zzzcomputing.com> wrote:
>> On Mar 11, 2011, at 7:51 PM, AJAY PATTNI wrote:
>> 
>> 
>> 
>>> We use sqlalchemy 0.4.6 with Elixir 0.5.2 and zope.sqlalchemy
>> 
>>> Every once a while we get this error(see below):
>>> In a previous thread somebody said, just 'rollback your session when
>>> the exception is raised'?
>> 
>>> We use a global session as follows:
>> 
>>> __session__ =
>>> scoped_session(sessionmaker(twophase=False,transactional=True,autoflush=True,extension=ZopeTransactionExtension()))
>> 
>>> All the rest of the transactional machinery is handled by Elixiry
>>> Entity object.
>> 
>>> So my question - how can we rollback in this situation?
>> 
>>> We tried to do __session__.remove() which seems to work but then zope
>>> seems to have a problem after it completes the request.
>> 
>> A description of what this error means from the perspective of SQLAlchemy 
>> only, not that of zope.sqlalchemy for which you should consult their mailing 
>> list, is here:
>> 
>>        
>> http://www.sqlalchemy.org/trac/wiki/FAQ#Thetransactionisinactivedueto...
>> 
>> However, note that version 0.4.6 of SQLAlchemy is extremely old, and the 
>> mechanics of session and transaction have been largely reworked since then.  
>>  The basic idea that a rollback needs to occur is consistent in that 
>> version, however.
>> 
>> Its very likely that some artifact of zope.sqlalchemy is involved in the 
>> production of your error here.
>> 
>>> ======================
>>> 2011-03-11T10:41:22 ERROR Zope.SiteErrorLog
>>> http://dragon.initiatesystems.com:8080/ati/txm_inject_orm
>>> Traceback (innermost last):
>>>  Module ZPublisher.Publish, line 121, in publish
>>>  Module Zope2.App.startup, line 238, in commit
>>>  Module transaction._manager, line 89, in commit
>>>  Module transaction._transaction, line 329, in commit
>>>  Module transaction._transaction, line 446, in _commitResources
>>>  Module zope.sqlalchemy.datamanager, line 76, in tpc_vote
>>>  Module sqlalchemy.orm.session, line 263, in commit
>>>  Module sqlalchemy.orm.session, line 176, in _assert_is_open
>>> InvalidRequestError: The transaction is closed
>>> =====================
>> 
>>> Appreciate any help I can get on this.
>> 
>>> ================
>>> Mar 4 12:56:23 pbrk4.den05.accenx.com [err]
>>> https://acm.accenx.com/mapsrvcluster/ati/acm/tdm/group/19150/broker/2...
>>> (innermost last):#012 Module ZPublisher.Publish, line 115, in
>>> publish#012 Module ZPublisher.mapply, line 88, in mapply#012 Module
>>> ZPublisher.Publish, line 41, in call_object#012 Module
>>> Shared.DC.Scripts.Bindings, line 313, in __call__#012 Module
>>> Shared.DC.Scripts.Bindings, line 350, in _bindAndExec#012 Module
>>> Products.PythonScripts.PythonScript, line 326, in _exec#012 Module
>>> None, line 90, in processMsg#012 - <PythonScript at /ati/acm/tdm/group/
>>> processMsg used for /ati/acm/tdm/group/19150/broker/25150/site/
>>> 705077435>#012 - Line 90#012 Module Shared.DC.Scripts.Bindings, line
>>> 313, in __call__#012 Module Shared.DC.Scripts.Bindings, line 350, in
>>> _bindAndExec#012 Module Products.PythonScripts.PythonScript, line 326,
>>> in _exec#012 Module None, line 131, in translate#012 - <PythonScript
>>> at /ati/acm/tdm/group/19150/broker/25150/site/705077435/outbound/
>>> translate>#012 - Line 131#012 Module Shared.DC.Scripts.Bindings, line
>>> 313, in __call__#012 Module Shared.DC.Scripts.Bindings, line 350, in
>>> _bindAndExec#012 Module Products.PythonScripts.PythonScript, line 326,
>>> in _exec#012 Module None, line 99, in callTxm#012 - <PythonScript at /
>>> ati/acm/tdm/group/19150/broker/25150/site/705077435/outbound/
>>> callTxm>#012 - Line 99#012 Module Shared.DC.Scripts.Bindings, line
>>> 313, in __call__#012 Module Shared.DC.Scripts.Bindings, line 350, in
>>> _bindAndExec#012 Module Products.PythonScripts.PythonScript, line 326,
>>> in _exec#012 Module None, line 44, in txm_ampiWrapperOrm#012 -
>>> <PythonScript at /ati/acm/tdm/group/19150/broker/25150/
>>> BrokerMapFunctions/TxmFunctions/txm_ampiWrapperOrm>#012 - Line 44#012
>>> Module Shared.DC.Scripts.Bindings, line 313, in __call__#012 Module
>>> Shared.DC.Scripts.Bindings, line 350, in _bindAndExec#012 Module
>>> Products.PythonScripts.PythonScript, line 326, in _exec#012 Module
>>> None, line 22, in getTransactionTypes#012 - <PythonScript at /ati/acm/
>>> tdm/group/19150/broker/25150/BrokerMapFunctions/TxmFunctions/
>>> getTransactionTypes>#012 - Line 22#012 Module Products.txm.txm, line
>>> 537, in txmQuery#012 Module Products.txm.txm_functions, line 139, in
>>> __init__#012 Module elixir.entity, line 854, in get_by#012 Module
>>> sqlalchemy.orm.query, line 907, in first#012 Module
>>> sqlalchemy.orm.query, line 935, in __iter__#012 Module
>>> sqlalchemy.orm.session, line 768, in _autoflush#012 Module
>>> sqlalchemy.orm.session, line 786, in flush#012 Module
>>> sqlalchemy.orm.unitofwork, line 230, in flush#012 Module
>>> sqlalchemy.orm.session, line 499, in begin#012 Module
>>> sqlalchemy.orm.session, line 178, in _begin#012 Module
>>> sqlalchemy.orm.session, line 166, in
>>> _assert_is_active#012InvalidRequestError: The transaction is inactive
>>> due to a rollback in a subtransaction and should be closed
>>> =========
>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "sqlalchemy" group.
>>> To post to this group, send email to sqlalchemy@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> sqlalchemy+unsubscr...@googlegroups.com.
>>> For more options, visit this group 
>>> athttp://groups.google.com/group/sqlalchemy?hl=en.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> To unsubscribe from this group, send email to 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to