diff --git a/dbsim/db_server_state.hpp b/dbsim/db_server_state.hpp index bab13d3..b9ea555 100644 --- a/dbsim/db_server_state.hpp +++ b/dbsim/db_server_state.hpp @@ -45,7 +45,6 @@ namespace db "", address, working_dir, - wsrep::gtid::undefined(), 1, wsrep::server_state::rm_async) , mutex_() diff --git a/dbsim/db_simulator.cpp b/dbsim/db_simulator.cpp index 990d1ac..3442e66 100644 --- a/dbsim/db_simulator.cpp +++ b/dbsim/db_simulator.cpp @@ -137,7 +137,8 @@ void db::simulator::start() std::string server_options(params_.wsrep_provider_options); if (server.server_state().load_provider( - params_.wsrep_provider, server_options)) + params_.wsrep_provider, server_options, + wsrep::gtid::undefined())) { throw wsrep::runtime_error("Failed to load provider"); } diff --git a/include/wsrep/provider.hpp b/include/wsrep/provider.hpp index 1250b24..654dd7c 100644 --- a/include/wsrep/provider.hpp +++ b/include/wsrep/provider.hpp @@ -362,7 +362,8 @@ namespace wsrep static provider* make_provider( wsrep::server_state&, const std::string& provider_spec, - const std::string& provider_options); + const std::string& provider_options, + const wsrep::gtid& initial_position); protected: wsrep::server_state& server_state_; }; diff --git a/include/wsrep/server_state.hpp b/include/wsrep/server_state.hpp index cd52ee9..e44f560 100644 --- a/include/wsrep/server_state.hpp +++ b/include/wsrep/server_state.hpp @@ -212,11 +212,6 @@ namespace wsrep */ const std::string& working_dir() const { return working_dir_; } - /** - * Return initial position for server. - */ - const wsrep::gtid& initial_position() const - { return initial_position_; } /** * Return maximum protocol version. */ @@ -261,7 +256,8 @@ namespace wsrep * @return Zero on success, non-zero on error. */ int load_provider(const std::string& provider, - const std::string& provider_options); + const std::string& provider_options, + const wsrep::gtid& intial_position); void unload_provider(); @@ -557,7 +553,7 @@ namespace wsrep const std::string& incoming_address, const std::string& address, const std::string& working_dir, - const wsrep::gtid& initial_position, + // const wsrep::gtid& initial_position, int max_protocol_version, enum rollback_mode rollback_mode) : mutex_(mutex) @@ -567,7 +563,7 @@ namespace wsrep , state_hist_() , state_waiters_(n_states_) , bootstrap_() - , initial_position_(initial_position) + // , initial_position_(initial_position) , init_initialized_() , init_synced_() , sst_gtid_() @@ -628,7 +624,7 @@ namespace wsrep std::vector state_hist_; mutable std::vector state_waiters_; bool bootstrap_; - const wsrep::gtid initial_position_; + // const wsrep::gtid initial_position_; bool init_initialized_; bool init_synced_; wsrep::gtid sst_gtid_; diff --git a/src/provider.cpp b/src/provider.cpp index 6bc855b..4e9d115 100644 --- a/src/provider.cpp +++ b/src/provider.cpp @@ -25,12 +25,13 @@ wsrep::provider* wsrep::provider::make_provider( wsrep::server_state& server_state, const std::string& provider_spec, - const std::string& provider_options) + const std::string& provider_options, + const wsrep::gtid& initial_position) { try { return new wsrep::wsrep_provider_v26( - server_state, provider_options, provider_spec); + server_state, provider_options, provider_spec, initial_position); } catch (const wsrep::runtime_error& e) { diff --git a/src/server_state.cpp b/src/server_state.cpp index 8c50f30..4ed81c0 100644 --- a/src/server_state.cpp +++ b/src/server_state.cpp @@ -332,14 +332,15 @@ static int apply_toi(wsrep::provider& provider, ////////////////////////////////////////////////////////////////////////////// int wsrep::server_state::load_provider(const std::string& provider_spec, - const std::string& provider_options) + const std::string& provider_options, + const wsrep::gtid& initial_position) { wsrep::log_info() << "Loading provider " << provider_spec << "initial position: " - << initial_position_; + << initial_position; provider_ = wsrep::provider::make_provider( - *this, provider_spec, provider_options); + *this, provider_spec, provider_options, initial_position); return (provider_ ? 0 : 1); } diff --git a/src/wsrep_provider_v26.cpp b/src/wsrep_provider_v26.cpp index cbe9b78..25cead6 100644 --- a/src/wsrep_provider_v26.cpp +++ b/src/wsrep_provider_v26.cpp @@ -546,15 +546,16 @@ namespace wsrep::wsrep_provider_v26::wsrep_provider_v26( wsrep::server_state& server_state, const std::string& provider_options, - const std::string& provider_spec) + const std::string& provider_spec, + const wsrep::gtid& initial_position) : provider(server_state) , wsrep_() { wsrep_gtid_t state_id; std::memcpy(state_id.uuid.data, - server_state.initial_position().id().data(), + initial_position.id().data(), sizeof(state_id.uuid.data)); - state_id.seqno = server_state.initial_position().seqno().get(); + state_id.seqno = initial_position.seqno().get(); struct wsrep_init_args init_args; memset(&init_args, 0, sizeof(init_args)); init_args.app_ctx = &server_state; diff --git a/src/wsrep_provider_v26.hpp b/src/wsrep_provider_v26.hpp index 41b5233..bfbbcd9 100644 --- a/src/wsrep_provider_v26.hpp +++ b/src/wsrep_provider_v26.hpp @@ -31,7 +31,7 @@ namespace wsrep public: wsrep_provider_v26(wsrep::server_state&, const std::string&, - const std::string&); + const std::string&, const wsrep::gtid&); ~wsrep_provider_v26(); enum wsrep::provider::status connect(const std::string&, const std::string&, const std::string&, diff --git a/test/mock_server_state.hpp b/test/mock_server_state.hpp index 7826a92..875f464 100644 --- a/test/mock_server_state.hpp +++ b/test/mock_server_state.hpp @@ -214,7 +214,6 @@ namespace wsrep wsrep::server_service& server_service) : wsrep::server_state(mutex_, cond_, server_service, name, "", "", "./", - wsrep::gtid::undefined(), 1, rollback_mode) , mutex_()