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

Pass pointer to high priority service as a parameter for log_view()

The pointer will pass applier context to log_view(), where it
can be used for stable storage access.
This commit is contained in:
Teemu Ollakka
2018-07-15 19:00:10 +03:00
parent 86472ee420
commit 21ae2c849e
5 changed files with 20 additions and 6 deletions

View File

@ -90,7 +90,8 @@ void db::server_service::log_dummy_write_set(
wsrep::log_info() << "Dummy write set: " << meta.seqno(); 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"; wsrep::log_info() << "View";
} }

View File

@ -31,7 +31,8 @@ namespace db
void log_message(enum wsrep::log::level, const char* message); void log_message(enum wsrep::log::level, const char* message);
void log_dummy_write_set(wsrep::client_state&, const wsrep::ws_meta&) void log_dummy_write_set(wsrep::client_state&, const wsrep::ws_meta&)
override; 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, void log_state_change(enum wsrep::server_state::state,
enum wsrep::server_state::state) override; enum wsrep::server_state::state) override;
int wait_committing_transactions(int) override; int wait_committing_transactions(int) override;

View File

@ -104,9 +104,16 @@ namespace wsrep
const wsrep::ws_meta& ws_meta) = 0; 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. * Log a state change event.

View File

@ -172,6 +172,8 @@ static int apply_write_set(wsrep::server_state& server_state,
wsrep::log_warning() << "Could not find applier context for " wsrep::log_warning() << "Could not find applier context for "
<< ws_meta.server_id() << ws_meta.server_id()
<< ": " << ws_meta.transaction_id(); << ": " << ws_meta.transaction_id();
ret = high_priority_service.log_dummy_write_set(
ws_handle, ws_meta);
} }
else else
{ {
@ -208,6 +210,8 @@ static int apply_write_set(wsrep::server_state& server_state,
<< "Could not find applier context for " << "Could not find applier context for "
<< ws_meta.server_id() << ws_meta.server_id()
<< ": " << ws_meta.transaction_id(); << ": " << ws_meta.transaction_id();
ret = high_priority_service.log_dummy_write_set(
ws_handle, ws_meta);
} }
else else
{ {
@ -564,7 +568,6 @@ void wsrep::server_state::on_view(const wsrep::view& view,
<< "name: " << i->name(); << "name: " << i->name();
} }
wsrep::log_info() << "================================================="; wsrep::log_info() << "=================================================";
server_service_.log_view(view);
current_view_ = view; current_view_ = view;
if (view.status() == wsrep::view::primary) if (view.status() == wsrep::view::primary)
{ {
@ -682,6 +685,8 @@ void wsrep::server_state::on_view(const wsrep::view& view,
state(lock, s_disconnected); state(lock, s_disconnected);
id_ = wsrep::id::undefined(); id_ = wsrep::id::undefined();
} }
server_service_.log_view(high_priority_service, view);
} }
void wsrep::server_state::on_sync() void wsrep::server_state::on_sync()

View File

@ -123,7 +123,7 @@ namespace wsrep
WSREP_OVERRIDE 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, void log_state_change(enum wsrep::server_state::state,
enum wsrep::server_state::state) enum wsrep::server_state::state)
{ } { }