1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-07-31 18:24:25 +03:00

Fixed dbsim SST issues.

This commit is contained in:
Teemu Ollakka
2018-07-02 19:17:38 +03:00
parent 635eaf4c29
commit 004244d203
2 changed files with 11 additions and 26 deletions

View File

@ -37,7 +37,7 @@ void db::simulator::sst(db::server& server,
wsrep::log_info() << "SST " << server.server_state().id() << " -> " << id; wsrep::log_info() << "SST " << server.server_state().id() << " -> " << id;
} }
i->second->server_state().sst_transferred(gtid); i->second->server_state().sst_transferred(gtid);
i->second->server_state().initialized(); // i->second->server_state().initialized();
// i->second->server_state().sst_received(gtid, 0); // i->second->server_state().sst_received(gtid, 0);
server.server_state().sst_sent(gtid, 0); server.server_state().sst_sent(gtid, 0);
} }

View File

@ -357,21 +357,15 @@ void wsrep::server_state::sst_transferred(const wsrep::gtid& gtid)
if (server_service_.sst_before_init()) if (server_service_.sst_before_init())
{ {
state(lock, s_initializing); state(lock, s_initializing);
// Incremental state transfer was received wait_until_state(lock, s_initialized);
// TODO: Sanity checks for gtid continuity assert(init_initialized_);
if (init_initialized_)
{
state(lock, s_initialized);
state(lock, s_joined); state(lock, s_joined);
lock.unlock(); lock.unlock();
// TODO: This should not be here, sst_received() should be
// called instead
if (provider().sst_received(sst_gtid_, 0)) if (provider().sst_received(sst_gtid_, 0))
{ {
throw wsrep::runtime_error("SST received failed"); throw wsrep::runtime_error("SST received failed");
} }
} }
}
else else
{ {
state(lock, s_joined); state(lock, s_joined);
@ -380,6 +374,7 @@ void wsrep::server_state::sst_transferred(const wsrep::gtid& gtid)
void wsrep::server_state::sst_received(const wsrep::gtid& gtid, int error) void wsrep::server_state::sst_received(const wsrep::gtid& gtid, int error)
{ {
assert(0);
wsrep::log_info() << "SST received: " << gtid << ": " << error; wsrep::log_info() << "SST received: " << gtid << ": " << error;
wsrep::unique_lock<wsrep::mutex> lock(mutex_); wsrep::unique_lock<wsrep::mutex> lock(mutex_);
state(lock, s_joined); state(lock, s_joined);
@ -398,16 +393,6 @@ void wsrep::server_state::initialized()
if (server_service_.sst_before_init()) if (server_service_.sst_before_init())
{ {
state(lock, s_initialized); state(lock, s_initialized);
if (sst_gtid_.is_undefined() == false)
{
lock.unlock();
if (provider().sst_received(sst_gtid_, 0))
{
throw wsrep::runtime_error("SST received failed");
}
lock.lock();
sst_gtid_ = wsrep::gtid::undefined();
}
} }
else else
{ {