diff --git a/src/client_state.cpp b/src/client_state.cpp index 499caf2..efa390c 100644 --- a/src/client_state.cpp +++ b/src/client_state.cpp @@ -535,8 +535,9 @@ int wsrep::client_state::bf_abort(wsrep::unique_lock& lock, { assert(lock.owns_lock()); assert(mode_ == m_local || transaction_.is_streaming()); - return transaction_.bf_abort(lock, bf_seqno); - + auto ret = transaction_.bf_abort(lock, bf_seqno); + assert(lock.owns_lock()); + return ret; } int wsrep::client_state::bf_abort(wsrep::seqno bf_seqno) @@ -545,11 +546,14 @@ int wsrep::client_state::bf_abort(wsrep::seqno bf_seqno) return bf_abort(lock, bf_seqno); } -int wsrep::client_state::total_order_bf_abort(wsrep::unique_lock& lock, wsrep::seqno bf_seqno) +int wsrep::client_state::total_order_bf_abort( + wsrep::unique_lock& lock, wsrep::seqno bf_seqno) { assert(lock.owns_lock()); assert(mode_ == m_local || transaction_.is_streaming()); - return transaction_.total_order_bf_abort(lock, bf_seqno); + auto ret = transaction_.total_order_bf_abort(lock, bf_seqno); + assert(lock.owns_lock()); + return ret; } int wsrep::client_state::total_order_bf_abort(wsrep::seqno bf_seqno) diff --git a/src/transaction.cpp b/src/transaction.cpp index 24bfff5..c864a0f 100644 --- a/src/transaction.cpp +++ b/src/transaction.cpp @@ -1075,6 +1075,7 @@ bool wsrep::transaction::bf_abort( lock.unlock(); server_service_.background_rollback(client_state_); + lock.lock(); } } return ret;