diff --git a/dbsim/db_server_service.cpp b/dbsim/db_server_service.cpp index 8fc58dd..6d49c6f 100644 --- a/dbsim/db_server_service.cpp +++ b/dbsim/db_server_service.cpp @@ -86,8 +86,9 @@ int db::server_service::start_sst( return 0; } -void db::server_service::background_rollback(wsrep::client_state&) +bool db::server_service::background_rollback(wsrep::client_state&) { + return false; } void db::server_service::bootstrap() diff --git a/dbsim/db_server_service.hpp b/dbsim/db_server_service.hpp index e5cd70d..fd47c5f 100644 --- a/dbsim/db_server_service.hpp +++ b/dbsim/db_server_service.hpp @@ -41,7 +41,7 @@ namespace db bool sst_before_init() const override; int start_sst(const std::string&, const wsrep::gtid&, bool) override; std::string sst_request() override; - void background_rollback(wsrep::client_state&) override; + bool background_rollback(wsrep::client_state&) override; void bootstrap() override; void log_message(enum wsrep::log::level, const char* message) override; void log_dummy_write_set(wsrep::client_state&, const wsrep::ws_meta&) diff --git a/include/wsrep/server_service.hpp b/include/wsrep/server_service.hpp index 2021e66..25b265e 100644 --- a/include/wsrep/server_service.hpp +++ b/include/wsrep/server_service.hpp @@ -86,7 +86,7 @@ namespace wsrep /** * Perform a background rollback for a transaction. */ - virtual void background_rollback(wsrep::client_state&) = 0; + virtual bool background_rollback(wsrep::client_state&) = 0; /** * Bootstrap a DBMS state for a new cluster. diff --git a/src/transaction.cpp b/src/transaction.cpp index c864a0f..d581c2f 100644 --- a/src/transaction.cpp +++ b/src/transaction.cpp @@ -1074,7 +1074,9 @@ bool wsrep::transaction::bf_abort( } lock.unlock(); - server_service_.background_rollback(client_state_); + /* if background rollback is skipped, reset rollbacker activity */ + if (server_service_.background_rollback(client_state_)) + client_state_.set_rollbacker_active(false); lock.lock(); } } diff --git a/test/mock_server_state.hpp b/test/mock_server_state.hpp index fabdf6b..49fb490 100644 --- a/test/mock_server_state.hpp +++ b/test/mock_server_state.hpp @@ -183,11 +183,12 @@ namespace wsrep return start_sst_action(); } - void + bool background_rollback(wsrep::client_state& client_state) WSREP_OVERRIDE { client_state.before_rollback(); client_state.after_rollback(); + return false; } int wait_committing_transactions(int) WSREP_OVERRIDE { return 0; }