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

Always call provider bf_abort for active transactions

in transaction::bf_abort().

Check if the state is s_must_abort before changing the state to
s_must_abort when entering a critical section.
This commit is contained in:
Teemu Ollakka
2018-07-04 08:39:20 +03:00
parent 622b6583a2
commit 4d59ade77b

View File

@ -599,12 +599,6 @@ bool wsrep::transaction::bf_abort(
{
WSREP_TC_LOG_DEBUG(1, "Transaction not active, skipping bf abort");
}
else if (ordered() && seqno() < bf_seqno)
{
WSREP_TC_LOG_DEBUG(1,
"Not allowed to BF abort transaction ordered before "
<< "aborter: " << seqno() << " < " << bf_seqno);
}
else
{
switch (state())
@ -838,7 +832,10 @@ int wsrep::transaction::certify_commit(
{
lock.lock();
client_state_.override_error(wsrep::e_size_exceeded_error);
state(lock, s_must_abort);
if (state_ != s_must_abort)
{
state(lock, s_must_abort);
}
return 1;
}
@ -846,7 +843,10 @@ int wsrep::transaction::certify_commit(
{
lock.lock();
client_state_.override_error(wsrep::e_interrupted_error);
state(lock, s_must_abort);
if (state_ != s_must_abort)
{
state(lock, s_must_abort);
}
return 1;
}