Ok, that was my fault.

I was calling rollback() on a sqla.orm.session, instead of calling
transaction.abort()
Although the documentation only forbids calling commit, it does not say
anything about rolling back an individual session :(

Thanks!

Pau.

2013/6/25 Michael Bayer <[email protected]>

> looks like a zope.transaction issue to me, or at least one where they'd
> have to show me how they need to use the Session.  They seem to be calling
> upon session.transaction.prepare() directly at a time when that
> session.transaction is no longer associated with the parent session.
> You'd need to take it up with the zope.transaction folks first.
>
>
>
>
> On Jun 25, 2013, at 5:49 AM, Pau Tallada <[email protected]> wrote:
>
> Hi!
>
> I think I've stepped on the same or similar bug.
>
> I have a software which uses zodb transactions to synchronize operations
> in two databases. In the end, the two databases are the same (we are using
> the exact same postgresql connection url for both). The software runs fine
> if only one instance is launched.
>
> But... if I launch more than one instance at a time, there is a great
> possibility that I get an Exception like this:
>
> Traceback (most recent call last):
>   File
> "/nfs/pau/PAUdm/codes/tonello/ENV/packaging_test/lib/python2.6/site-packages/brownthrower/dispatcher/static/__init__.py",
> line 238, in _run_job
>     transaction.commit()
>   File
> "/nfs/pau/PAUdm/codes/tonello/ENV/packaging_test/lib/python2.6/site-packages/transaction/_manager.py",
> line 111, in commit
>     return self.get().commit()
>   File
> "/nfs/pau/PAUdm/codes/tonello/ENV/packaging_test/lib/python2.6/site-packages/transaction/_transaction.py",
> line 280, in commit
>     reraise(t, v, tb)
>   File
> "/nfs/pau/PAUdm/codes/tonello/ENV/packaging_test/lib/python2.6/site-packages/transaction/_transaction.py",
> line 271, in commit
>     self._commitResources()
>   File
> "/nfs/pau/PAUdm/codes/tonello/ENV/packaging_test/lib/python2.6/site-packages/transaction/_transaction.py",
> line 417, in _commitResources
>     reraise(t, v, tb)
>   File
> "/nfs/pau/PAUdm/codes/tonello/ENV/packaging_test/lib/python2.6/site-packages/transaction/_transaction.py",
> line 394, in _commitResources
>     rm.tpc_vote(self)
>   File
> "/nfs/pau/PAUdm/codes/tonello/ENV/packaging_test/lib/python2.6/site-packages/zope/sqlalchemy/datamanager.py",
> line 153, in tpc_vote
>     self.tx.prepare()
>   File
> "/nfs/pau/PAUdm/codes/tonello/ENV/packaging_test/lib/python2.6/site-packages/sqlalchemy/orm/session.py",
> line 313, in prepare
>     if self._parent is not None or not self.session.twophase:
> AttributeError: 'NoneType' object has no attribute 'twophase'
>
> I'm completely lost on this :(
>
> Any clues?
>
> BTW, sessions are created like this:
>
>     engine = create_engine('postgresql://foo')
>
>     session_maker = scoped_session(sessionmaker(
>         bind = engine,
>         twophase = True,
>         extension = ZopeTransactionExtension()
>     ))
>
> Thank you very much in advance :)
>
> Pau.
>
> 2013/2/20 Michael Bayer <[email protected]>
>
>> you'd have to illustrate a working example of the code that causes that.
>>
>>
>> On Feb 20, 2013, at 6:18 AM, Christian Démolis <
>> [email protected]> wrote:
>>
>> Hi,
>>
>> AttributeError: 'NoneType' object has no attribute 'twophase'
>>
>>
>>
>> 243.
>> 244.
>> 245.
>> 246.
>> 247.
>> 248.
>>
>> 249.
>> 250.
>> 251.
>> 252.
>>
>>
>>                         "Session already has a Connection associated for the 
>> "
>>                         "given Connection's Engine")
>>
>>
>>
>>
>>             else:
>>                 conn = bind.contextual_connect()
>>
>>
>>
>>
>>         if self.session.twophase and self._parent is None:
>>
>>
>>
>>
>>             transaction = conn.begin_twophase()
>>         elif self.nested:
>>
>>
>>
>>
>>             transaction = conn.begin_nested()
>>         else:
>>
>>
>> Anybody understand this error ?
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
>
> --
> ----------------------------------
> Pau Tallada Crespí
> Dep. d'Astrofísica i Cosmologia
> Port d'Informació Científica (PIC)
> Tel: +34 93 586 8233
> ----------------------------------
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy.
>
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy.
>
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
----------------------------------
Pau Tallada Crespí
Dep. d'Astrofísica i Cosmologia
Port d'Informació Científica (PIC)
Tel: +34 93 586 8233
----------------------------------

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to