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();
}
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";
}

View File

@ -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;

View File

@ -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.

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 "
<< 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()

View File

@ -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)
{ }