mirror of
https://github.com/codership/wsrep-lib.git
synced 2026-10-23 09:48:57 +03:00
Unlock before releasing aborted transaction in provider.
Having aborted transaction holding a lock when releasing the transaction in provider may cause a deadlock if: - The transaction was BF aborted before it was known that the latest fragment was successfully replicated, - Transaction was going to be released on provider side, but it waited for commit order, - BF thread tried to grab lock for BF aborting, perhaps for second time. As a fix, unlock the lock protecting victim transaction for the duration of transaction release.
This commit is contained in:
@@ -841,7 +841,9 @@ int wsrep::transaction::after_statement()
|
||||
{
|
||||
ret = release_commit_order(lock);
|
||||
}
|
||||
lock.unlock();
|
||||
provider().release(ws_handle_);
|
||||
lock.lock();
|
||||
}
|
||||
|
||||
if (state() != s_executing && state() != s_prepared)
|
||||
|
||||
Reference in New Issue
Block a user