diff --git a/include/wsrep/server_state.hpp b/include/wsrep/server_state.hpp index ce72bb4..ff366cc 100644 --- a/include/wsrep/server_state.hpp +++ b/include/wsrep/server_state.hpp @@ -625,6 +625,10 @@ namespace wsrep wsrep::mutex& mutex() { return mutex_; } + void disable_node_reset() { + disable_node_reset_ = true; + } + protected: /** Server state constructor * @@ -682,6 +686,7 @@ namespace wsrep , previous_primary_view_() , current_view_() , rollback_event_queue_() + , disable_node_reset_() { } private: @@ -764,6 +769,7 @@ namespace wsrep wsrep::view previous_primary_view_; wsrep::view current_view_; std::deque rollback_event_queue_; + bool disable_node_reset_; }; static inline const char* to_c_string( diff --git a/src/server_state.cpp b/src/server_state.cpp index 420929f..24f749e 100644 --- a/src/server_state.cpp +++ b/src/server_state.cpp @@ -813,7 +813,8 @@ catch (const wsrep::runtime_error& e) wsrep::log_error() << "sst_received failed: " << e.what(); if (provider_) { - provider_->sst_received(wsrep::gtid::undefined(), -EINTR); + provider_->sst_received(wsrep::gtid::undefined(), + (disable_node_reset_ ? -ECANCELED : -EINTR)); } return 1; }