Improve restore replication role (#1089)
This commit is contained in:
parent
514fed51c4
commit
f0bac53e7b
@ -1973,28 +1973,26 @@ void InMemoryStorage::RestoreReplicationRole() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spdlog::info("Restoring replication role.");
|
spdlog::info("Restoring replication role.");
|
||||||
|
|
||||||
uint16_t port = replication::kDefaultReplicationPort;
|
uint16_t port = replication::kDefaultReplicationPort;
|
||||||
for (const auto &[replica_name, replica_data] : *storage_) {
|
|
||||||
const auto maybe_replica_status = replication::JSONToReplicationStatus(nlohmann::json::parse(replica_data));
|
|
||||||
if (!maybe_replica_status.has_value()) {
|
|
||||||
LOG_FATAL("Cannot parse previously saved configuration of replica {}.", replica_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (replica_name != replication::kReservedReplicationRoleName) {
|
const auto replication_data = storage_->Get(replication::kReservedReplicationRoleName);
|
||||||
continue;
|
if (!replication_data.has_value()) {
|
||||||
}
|
spdlog::debug("Cannot find data needed for restore replication role in persisted metadata.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto replica_status = *maybe_replica_status;
|
const auto maybe_replication_status = replication::JSONToReplicationStatus(nlohmann::json::parse(*replication_data));
|
||||||
|
if (!maybe_replication_status.has_value()) {
|
||||||
|
LOG_FATAL("Cannot parse previously saved configuration of replication role {}.",
|
||||||
|
replication::kReservedReplicationRoleName);
|
||||||
|
}
|
||||||
|
|
||||||
if (!replica_status.role.has_value()) {
|
const auto replication_status = *maybe_replication_status;
|
||||||
replication_role_.store(replication::ReplicationRole::MAIN);
|
if (!replication_status.role.has_value()) {
|
||||||
} else {
|
replication_role_.store(replication::ReplicationRole::MAIN);
|
||||||
replication_role_.store(*replica_status.role);
|
} else {
|
||||||
port = replica_status.port;
|
replication_role_.store(*replication_status.role);
|
||||||
}
|
port = replication_status.port;
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (replication_role_ == replication::ReplicationRole::REPLICA) {
|
if (replication_role_ == replication::ReplicationRole::REPLICA) {
|
||||||
|
Loading…
Reference in New Issue
Block a user