[ZODB-Dev] RelStorage: ConflictError causes deadlock without RELSTORAGE_ABORT_EARLY
Shane Hathaway
shane at hathawaymix.org
Fri Sep 5 07:46:03 CEST 2014
On 07/19/2014 05:22 PM, Sean Upton wrote:
> Folks,
>
> I have been dealing with locking issues and RelStorage for the past
> few days, and want to verify what I believe is a bug: without
> RELSTORAGE_ABORT_EARLY set in environment, tpc_vote() could
> potentially leave an ILocker adapter setting an RDBMS table lock
> (originally set in either tpc_begin() or in _prepare_tid()) that does
> not get removed.
Hi Sean,
Sorry to take so long to reply. Life is busy!
That variable only has an effect on transactions that fail inside
tpc_vote(). When tpc_vote() fails, the code expects something to call
tpc_abort() later, releasing the commit lock. However, I wonder whether
there are cases where the transaction package will only call abort(),
not tpc_abort(). If so, RelStorage probably needs to release the lock
in abort().
Shane
More information about the ZODB-Dev
mailing list