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:
@ -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)
|
||||
|
@ -1075,6 +1075,7 @@ bool wsrep::transaction::bf_abort(
|
||||
|
||||
lock.unlock();
|
||||
server_service_.background_rollback(client_state_);
|
||||
lock.lock();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user