1
0
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:
Teemu Ollakka
2020-10-13 17:51:51 +03:00
parent c68ad83aba
commit 04944b4d10

View File

@@ -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)