We plan to use gossip data to educate Raft RPC about IP addresses of raft peers. Add raft server ids to application state, so that when we get a notification about a gossip peer we can identify which raft server id this notification is for, specifically, we can find what IP address stands for this server id, and, whenever the IP address changes, we can update Raft address map with the new address. On the same token, at boot time, we now have to start Gossip before Raft, since Raft won't be able to send any messages without gossip data about IP addresses.
56 lines
2.1 KiB
C++
56 lines
2.1 KiB
C++
/*
|
|
* Modified by ScyllaDB
|
|
* Copyright 2015-present ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: (AGPL-3.0-or-later and Apache-2.0)
|
|
*/
|
|
|
|
#include "gms/application_state.hh"
|
|
#include <seastar/core/sstring.hh>
|
|
#include <ostream>
|
|
#include <map>
|
|
#include "seastarx.hh"
|
|
|
|
namespace gms {
|
|
|
|
static const std::map<application_state, sstring> application_state_names = {
|
|
{application_state::STATUS, "STATUS"},
|
|
{application_state::LOAD, "LOAD"},
|
|
{application_state::SCHEMA, "SCHEMA"},
|
|
{application_state::DC, "DC"},
|
|
{application_state::RACK, "RACK"},
|
|
{application_state::RELEASE_VERSION, "RELEASE_VERSION"},
|
|
{application_state::REMOVAL_COORDINATOR, "REMOVAL_COORDINATOR"},
|
|
{application_state::INTERNAL_IP, "INTERNAL_IP"},
|
|
{application_state::RPC_ADDRESS, "RPC_ADDRESS"},
|
|
{application_state::RAFT_SERVER_ID, "RAFT_SERVER_ID"},
|
|
{application_state::SEVERITY, "SEVERITY"},
|
|
{application_state::NET_VERSION, "NET_VERSION"},
|
|
{application_state::HOST_ID, "HOST_ID"},
|
|
{application_state::TOKENS, "TOKENS"},
|
|
{application_state::SUPPORTED_FEATURES, "SUPPORTED_FEATURES"},
|
|
{application_state::CACHE_HITRATES, "CACHE_HITRATES"},
|
|
{application_state::SCHEMA_TABLES_VERSION, "SCHEMA_TABLES_VERSION"},
|
|
{application_state::RPC_READY, "RPC_READY"},
|
|
{application_state::VIEW_BACKLOG, "VIEW_BACKLOG"},
|
|
{application_state::SHARD_COUNT, "SHARD_COUNT"},
|
|
{application_state::IGNORE_MSB_BITS, "IGNOR_MSB_BITS"},
|
|
{application_state::CDC_GENERATION_ID, "CDC_STREAMS_TIMESTAMP"}, /* not named "CDC_GENERATION_ID" for backward compatibility */
|
|
{application_state::SNITCH_NAME, "SNITCH_NAME"},
|
|
};
|
|
|
|
std::ostream& operator<<(std::ostream& os, const application_state& m) {
|
|
auto it = application_state_names.find(m);
|
|
if (it != application_state_names.end()) {
|
|
os << application_state_names.at(m);
|
|
} else {
|
|
os << "UNKNOWN";
|
|
}
|
|
return os;
|
|
}
|
|
|
|
}
|
|
|