1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-07-03 16:22:35 +03:00

Some methods in wsrep-lib still hide/ignore return codes from provider

which complicates diagnostics and debugging.

Don't ignore provider return codes and more verbose error logging for
sst_sent(), sst_received(), set_encryption_key() methods

Refs codership/wsrep-lib#127
This commit is contained in:
Alexey Yurchenko
2020-03-27 15:31:23 +02:00
parent 593f737605
commit daae4a9c35
6 changed files with 107 additions and 49 deletions

View File

@ -684,10 +684,12 @@ void wsrep::server_state::sst_sent(const wsrep::gtid& gtid, int error)
wsrep::unique_lock<wsrep::mutex> lock(mutex_);
state(lock, s_joined);
lock.unlock();
if (provider().sst_sent(gtid, error))
enum provider::status const retval(provider().sst_sent(gtid, error));
if (retval != provider::success)
{
server_service_.log_message(wsrep::log::warning,
"Provider sst_sent() returned an error");
std::string msg("wsrep::sst_sent() returned an error: ");
msg += wsrep::provider::to_string(retval);
server_service_.log_message(wsrep::log::warning, msg.c_str());
}
}
@ -776,9 +778,12 @@ void wsrep::server_state::sst_received(wsrep::client_service& cs,
lock.unlock();
}
if (provider().sst_received(gtid, error))
enum provider::status const retval(provider().sst_received(gtid, error));
if (retval != provider::success)
{
throw wsrep::runtime_error("wsrep::sst_received() failed");
std::string msg("wsrep::sst_received() failed: ");
msg += wsrep::provider::to_string(retval);
throw wsrep::runtime_error(msg);
}
}
@ -826,8 +831,15 @@ wsrep::server_state::set_encryption_key(std::vector<unsigned char>& key)
encryption_key_ = key;
if (state_ != s_disconnected)
{
return provider_->enc_set_key(wsrep::const_buffer(encryption_key_.data(),
encryption_key_.size()));
wsrep::const_buffer const key(encryption_key_.data(),
encryption_key_.size());
enum provider::status const retval(provider_->enc_set_key(key));
if (retval != provider::success)
{
wsrep::log_error() << "Failed to set encryption key: "
<< provider::to_string(retval);
return 1;
}
}
return 0;
}