mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-04-19 21:02:17 +03:00
Reset TOI meta after releasing total order in provider
This is to keep the TOI meta available in case the provider implementation needs it.
This commit is contained in:
parent
bccb9997f2
commit
53e60f64c9
@ -367,6 +367,7 @@ namespace wsrep
|
|||||||
* Leave total order isolation critical section
|
* Leave total order isolation critical section
|
||||||
*/
|
*/
|
||||||
virtual enum status leave_toi(wsrep::client_id,
|
virtual enum status leave_toi(wsrep::client_id,
|
||||||
|
const wsrep::ws_meta& ws_meta,
|
||||||
const wsrep::mutable_buffer& err) = 0;
|
const wsrep::mutable_buffer& err) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -395,7 +395,7 @@ wsrep::client_state::poll_enter_toi(
|
|||||||
// Successfully entered TOI, but the provider reported failure.
|
// Successfully entered TOI, but the provider reported failure.
|
||||||
// This may happen for example if certification fails.
|
// This may happen for example if certification fails.
|
||||||
// Leave TOI before proceeding.
|
// Leave TOI before proceeding.
|
||||||
if (provider().leave_toi(id_, wsrep::mutable_buffer()))
|
if (provider().leave_toi(id_, poll_meta, wsrep::mutable_buffer()))
|
||||||
{
|
{
|
||||||
wsrep::log_warning()
|
wsrep::log_warning()
|
||||||
<< "Failed to leave TOI after failure in "
|
<< "Failed to leave TOI after failure in "
|
||||||
@ -499,10 +499,12 @@ int wsrep::client_state::leave_toi_local(const wsrep::mutable_buffer& err)
|
|||||||
{
|
{
|
||||||
debug_log_state("leave_toi_local: enter");
|
debug_log_state("leave_toi_local: enter");
|
||||||
assert(toi_mode_ == m_local);
|
assert(toi_mode_ == m_local);
|
||||||
leave_toi_common();
|
|
||||||
|
|
||||||
|
auto ret = (provider().leave_toi(id_, toi_meta_, err) == provider::success ? 0 : 1);
|
||||||
|
leave_toi_common();
|
||||||
debug_log_state("leave_toi_local: leave");
|
debug_log_state("leave_toi_local: leave");
|
||||||
return (provider().leave_toi(id_, err) == provider::success ? 0 : 1);
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wsrep::client_state::leave_toi_mode()
|
void wsrep::client_state::leave_toi_mode()
|
||||||
@ -619,7 +621,7 @@ int wsrep::client_state::end_nbo_phase_one(const wsrep::mutable_buffer& err)
|
|||||||
assert(mode_ == m_nbo);
|
assert(mode_ == m_nbo);
|
||||||
assert(in_toi());
|
assert(in_toi());
|
||||||
|
|
||||||
enum wsrep::provider::status status(provider().leave_toi(id_, err));
|
enum wsrep::provider::status status(provider().leave_toi(id_, toi_meta_, err));
|
||||||
wsrep::unique_lock<wsrep::mutex> lock(mutex_);
|
wsrep::unique_lock<wsrep::mutex> lock(mutex_);
|
||||||
int ret;
|
int ret;
|
||||||
switch (status)
|
switch (status)
|
||||||
@ -720,7 +722,7 @@ int wsrep::client_state::end_nbo_phase_two(const wsrep::mutable_buffer& err)
|
|||||||
assert(toi_mode_ == m_local);
|
assert(toi_mode_ == m_local);
|
||||||
assert(in_toi());
|
assert(in_toi());
|
||||||
enum wsrep::provider::status status(
|
enum wsrep::provider::status status(
|
||||||
provider().leave_toi(id_, err));
|
provider().leave_toi(id_, toi_meta_, err));
|
||||||
wsrep::unique_lock<wsrep::mutex> lock(mutex_);
|
wsrep::unique_lock<wsrep::mutex> lock(mutex_);
|
||||||
int ret;
|
int ret;
|
||||||
switch (status)
|
switch (status)
|
||||||
|
@ -1025,6 +1025,7 @@ wsrep::wsrep_provider_v26::enter_toi(
|
|||||||
|
|
||||||
enum wsrep::provider::status
|
enum wsrep::provider::status
|
||||||
wsrep::wsrep_provider_v26::leave_toi(wsrep::client_id client_id,
|
wsrep::wsrep_provider_v26::leave_toi(wsrep::client_id client_id,
|
||||||
|
const wsrep::ws_meta&,
|
||||||
const wsrep::mutable_buffer& err)
|
const wsrep::mutable_buffer& err)
|
||||||
{
|
{
|
||||||
const wsrep_buf_t err_buf = { err.data(), err.size() };
|
const wsrep_buf_t err_buf = { err.data(), err.size() };
|
||||||
|
@ -83,6 +83,7 @@ namespace wsrep
|
|||||||
int)
|
int)
|
||||||
WSREP_OVERRIDE;
|
WSREP_OVERRIDE;
|
||||||
enum wsrep::provider::status leave_toi(wsrep::client_id,
|
enum wsrep::provider::status leave_toi(wsrep::client_id,
|
||||||
|
const wsrep::ws_meta& ws_meta,
|
||||||
const wsrep::mutable_buffer&)
|
const wsrep::mutable_buffer&)
|
||||||
WSREP_OVERRIDE;
|
WSREP_OVERRIDE;
|
||||||
std::pair<wsrep::gtid, enum wsrep::provider::status>
|
std::pair<wsrep::gtid, enum wsrep::provider::status>
|
||||||
|
@ -260,6 +260,7 @@ namespace wsrep
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum wsrep::provider::status leave_toi(wsrep::client_id,
|
enum wsrep::provider::status leave_toi(wsrep::client_id,
|
||||||
|
const wsrep::ws_meta&,
|
||||||
const wsrep::mutable_buffer&)
|
const wsrep::mutable_buffer&)
|
||||||
WSREP_OVERRIDE
|
WSREP_OVERRIDE
|
||||||
{ return wsrep::provider::success; }
|
{ return wsrep::provider::success; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user