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

Fixup to previous commit. Since dbsim implies that logger function is

static and global, it cannot use the reporter object, which must be a
non-static member of server class.
This commit is contained in:
Alexey Yurchenko
2021-09-11 22:50:20 +03:00
parent 7d6641764b
commit efb4aab090
3 changed files with 9 additions and 30 deletions

View File

@ -24,13 +24,11 @@
#include "db_simulator.hpp" #include "db_simulator.hpp"
#include "wsrep/logger.hpp" #include "wsrep/logger.hpp"
#include "wsrep/reporter.hpp"
#include <ostream> #include <ostream>
#include <cstdio> #include <cstdio>
static wsrep::default_mutex logger_mtx; static wsrep::default_mutex logger_mtx;
static wsrep::reporter* reporter = nullptr;
static void static void
logger_fn(wsrep::log::level l, const char* pfx, const char* msg) logger_fn(wsrep::log::level l, const char* pfx, const char* msg)
@ -50,31 +48,19 @@ logger_fn(wsrep::log::level l, const char* pfx, const char* msg)
date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, date.tm_year + 1900, date.tm_mon + 1, date.tm_mday,
date.tm_hour, date.tm_min, date.tm_sec, (int)time.tv_nsec/1000000); date.tm_hour, date.tm_min, date.tm_sec, (int)time.tv_nsec/1000000);
#define LOG_STR date_str << pfx << wsrep::log::to_c_string(l) << msg std::cerr << date_str << ' ' << pfx << wsrep::log::to_c_string(l) << ' '
if (l >= wsrep::log::error && reporter) << msg << std::endl;
{
std::ostringstream os;
os << LOG_STR;
std::cerr << os.str() << std::endl;
auto const tstamp(double(time.tv_sec) + double(time.tv_nsec)*1.0e-9);
reporter->report_log_msg(wsrep::reporter::error, os.str(), tstamp);
}
else
{
std::cerr << LOG_STR << std::endl;
}
#undef LOG_STR
} }
db::server::server(simulator& simulator, db::server::server(simulator& simulator,
const std::string& name, const std::string& name,
const std::string& address, const std::string& address)
const std::string& status_file)
: simulator_(simulator) : simulator_(simulator)
, storage_engine_(simulator_.params()) , storage_engine_(simulator_.params())
, mutex_() , mutex_()
, cond_() , cond_()
, server_service_(*this) , server_service_(*this)
, reporter_(mutex_, name + ".json", 4)
, server_state_(server_service_, , server_state_(server_service_,
name, address, "dbsim_" + name + "_data") name, address, "dbsim_" + name + "_data")
, last_client_id_(0) , last_client_id_(0)
@ -84,12 +70,6 @@ db::server::server(simulator& simulator,
, client_threads_() , client_threads_()
{ {
wsrep::log::logger_fn(logger_fn); wsrep::log::logger_fn(logger_fn);
reporter = new wsrep::reporter(mutex_, status_file, 3);
}
db::server::~server()
{
delete reporter;
} }
void db::server::applier_thread() void db::server::applier_thread()
@ -183,5 +163,5 @@ void db::server::log_state_change(enum wsrep::server_state::state from,
enum wsrep::server_state::state to) enum wsrep::server_state::state to)
{ {
wsrep::log_info() << "State changed " << from << " -> " << to; wsrep::log_info() << "State changed " << from << " -> " << to;
if (reporter) reporter->report_state(to, 0); reporter_.report_state(to, 0);
} }

View File

@ -22,6 +22,7 @@
#include "wsrep/gtid.hpp" #include "wsrep/gtid.hpp"
#include "wsrep/client_state.hpp" #include "wsrep/client_state.hpp"
#include "wsrep/reporter.hpp"
#include "db_storage_engine.hpp" #include "db_storage_engine.hpp"
#include "db_server_state.hpp" #include "db_server_state.hpp"
@ -41,9 +42,7 @@ namespace db
public: public:
server(simulator& simulator, server(simulator& simulator,
const std::string& name, const std::string& name,
const std::string& address, const std::string& address);
const std::string& status_file);
~server();
void applier_thread(); void applier_thread();
void start_applier(); void start_applier();
void stop_applier(); void stop_applier();
@ -70,6 +69,7 @@ namespace db
wsrep::default_mutex mutex_; wsrep::default_mutex mutex_;
wsrep::default_condition_variable cond_; wsrep::default_condition_variable cond_;
db::server_service server_service_; db::server_service server_service_;
wsrep::reporter reporter_;
db::server_state server_state_; db::server_state server_state_;
std::atomic<size_t> last_client_id_; std::atomic<size_t> last_client_id_;
std::atomic<size_t> last_transaction_id_; std::atomic<size_t> last_transaction_id_;

View File

@ -137,8 +137,7 @@ void db::simulator::start()
std::make_unique<db::server>( std::make_unique<db::server>(
*this, *this,
name_os.str(), name_os.str(),
address_os.str(), address_os.str()))));
name_os.str() + "_" + params_.status_file))));
if (it.second == false) if (it.second == false)
{ {
throw wsrep::runtime_error("Failed to add server"); throw wsrep::runtime_error("Failed to add server");