File tree 2 files changed +12
-2
lines changed
2 files changed +12
-2
lines changed Original file line number Diff line number Diff line change @@ -85,6 +85,7 @@ namespace wsrep
85
85
86
86
/* *
87
87
* Perform a background rollback for a transaction.
88
+ * @return true if rollbacker was not started, false otherwise
88
89
*/
89
90
virtual bool background_rollback (wsrep::client_state&) = 0;
90
91
Original file line number Diff line number Diff line change @@ -1076,8 +1076,17 @@ bool wsrep::transaction::bf_abort(
1076
1076
lock.unlock ();
1077
1077
/* if background rollback is skipped, reset rollbacker activity */
1078
1078
if (server_service_.background_rollback (client_state_))
1079
- client_state_.set_rollbacker_active (false );
1080
- lock.lock ();
1079
+ {
1080
+ lock.lock ();
1081
+ client_state_.set_rollbacker_active (false );
1082
+
1083
+ /* release the victim from waiting, if it has advanced to
1084
+ wait_rollback_complete_and_acquire_ownership stage */
1085
+ if (client_state_.state () == wsrep::client_state::s_idle)
1086
+ client_state_.cond_ .notify_all ();
1087
+ }
1088
+ else
1089
+ lock.lock ();
1081
1090
}
1082
1091
}
1083
1092
return ret;
You can’t perform that action at this time.
0 commit comments