1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-07-30 07:23:07 +03:00

Grab lock after starting background rollback

This makes the bf_abort() to return with lock locked.
This commit is contained in:
Teemu Ollakka
2023-03-17 16:24:56 +02:00
parent 69b9d7d464
commit 5185ad3481
2 changed files with 9 additions and 4 deletions

View File

@ -535,8 +535,9 @@ int wsrep::client_state::bf_abort(wsrep::unique_lock<wsrep::mutex>& 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<wsrep::mutex>& lock, wsrep::seqno bf_seqno)
int wsrep::client_state::total_order_bf_abort(
wsrep::unique_lock<wsrep::mutex>& 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)

View File

@ -1075,6 +1075,7 @@ bool wsrep::transaction::bf_abort(
lock.unlock();
server_service_.background_rollback(client_state_);
lock.lock();
}
}
return ret;