diff --git a/dbsim/db_server_service.cpp b/dbsim/db_server_service.cpp index d5706fe..ddeb2ab 100644 --- a/dbsim/db_server_service.cpp +++ b/dbsim/db_server_service.cpp @@ -90,7 +90,8 @@ void db::server_service::log_dummy_write_set( wsrep::log_info() << "Dummy write set: " << meta.seqno(); } -void db::server_service::log_view(const wsrep::view&) +void db::server_service::log_view(wsrep::high_priority_service*, + const wsrep::view&) { wsrep::log_info() << "View"; } diff --git a/dbsim/db_server_service.hpp b/dbsim/db_server_service.hpp index 9834c42..d02e43f 100644 --- a/dbsim/db_server_service.hpp +++ b/dbsim/db_server_service.hpp @@ -31,7 +31,8 @@ namespace db void log_message(enum wsrep::log::level, const char* message); void log_dummy_write_set(wsrep::client_state&, const wsrep::ws_meta&) override; - void log_view(const wsrep::view&) override; + void log_view(wsrep::high_priority_service*, + const wsrep::view&) override; void log_state_change(enum wsrep::server_state::state, enum wsrep::server_state::state) override; int wait_committing_transactions(int) override; diff --git a/include/wsrep/server_service.hpp b/include/wsrep/server_service.hpp index 2209670..5a8404a 100644 --- a/include/wsrep/server_service.hpp +++ b/include/wsrep/server_service.hpp @@ -104,9 +104,16 @@ namespace wsrep const wsrep::ws_meta& ws_meta) = 0; /** - * Log a cluster view change event. + * Log a cluster view change event. The method takes + * as an argument a pointer to high priority service associated + * to an applier thread if one is available. + * + * @param high_priority_service Pointer to high priority service + * @param view Reference to view object */ - virtual void log_view(const wsrep::view&) = 0; + virtual void log_view( + wsrep::high_priority_service* high_priority_service, + const wsrep::view& view) = 0; /** * Log a state change event. diff --git a/src/server_state.cpp b/src/server_state.cpp index 161259a..0068b51 100644 --- a/src/server_state.cpp +++ b/src/server_state.cpp @@ -172,6 +172,8 @@ static int apply_write_set(wsrep::server_state& server_state, wsrep::log_warning() << "Could not find applier context for " << ws_meta.server_id() << ": " << ws_meta.transaction_id(); + ret = high_priority_service.log_dummy_write_set( + ws_handle, ws_meta); } else { @@ -208,6 +210,8 @@ static int apply_write_set(wsrep::server_state& server_state, << "Could not find applier context for " << ws_meta.server_id() << ": " << ws_meta.transaction_id(); + ret = high_priority_service.log_dummy_write_set( + ws_handle, ws_meta); } else { @@ -564,7 +568,6 @@ void wsrep::server_state::on_view(const wsrep::view& view, << "name: " << i->name(); } wsrep::log_info() << "================================================="; - server_service_.log_view(view); current_view_ = view; if (view.status() == wsrep::view::primary) { @@ -682,6 +685,8 @@ void wsrep::server_state::on_view(const wsrep::view& view, state(lock, s_disconnected); id_ = wsrep::id::undefined(); } + + server_service_.log_view(high_priority_service, view); } void wsrep::server_state::on_sync() diff --git a/test/mock_server_state.hpp b/test/mock_server_state.hpp index d957412..7be99bc 100644 --- a/test/mock_server_state.hpp +++ b/test/mock_server_state.hpp @@ -123,7 +123,7 @@ namespace wsrep WSREP_OVERRIDE { } - void log_view(const wsrep::view&) { } + void log_view(wsrep::high_priority_service*, const wsrep::view&) { } void log_state_change(enum wsrep::server_state::state, enum wsrep::server_state::state) { }