utils: move generation-number to gms
Although get_generation_number implementation is completely generic, it is used exclusively to seed the gossip generation number. Following patches will define a strong gms::generation_id type and this function should return it. Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
This commit is contained in:
@@ -700,7 +700,7 @@ scylla_core = (['message/messaging_service.cc',
|
||||
'utils/limiting_data_source.cc',
|
||||
'utils/updateable_value.cc',
|
||||
'utils/directories.cc',
|
||||
'utils/generation-number.cc',
|
||||
'gms/generation-number.cc',
|
||||
'utils/rjson.cc',
|
||||
'utils/human_readable.cc',
|
||||
'utils/histogram_metrics_helper.cc',
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
#include "db/view/build_progress_virtual_reader.hh"
|
||||
#include "db/schema_tables.hh"
|
||||
#include "index/built_indexes_virtual_reader.hh"
|
||||
#include "utils/generation-number.hh"
|
||||
#include "gms/generation-number.hh"
|
||||
#include "db/virtual_table.hh"
|
||||
#include "service/storage_service.hh"
|
||||
#include "protocol_server.hh"
|
||||
@@ -3125,11 +3125,11 @@ future<int> system_keyspace::increment_and_get_generation() {
|
||||
// seconds-since-epoch isn't a foolproof new generation
|
||||
// (where foolproof is "guaranteed to be larger than the last one seen at this ip address"),
|
||||
// but it's as close as sanely possible
|
||||
generation = utils::get_generation_number();
|
||||
generation = gms::get_generation_number();
|
||||
} else {
|
||||
// Other nodes will ignore gossip messages about a node that have a lower generation than previously seen.
|
||||
int stored_generation = rs->one().template get_as<int>("gossip_generation") + 1;
|
||||
int now = utils::get_generation_number();
|
||||
int now = gms::get_generation_number();
|
||||
if (stored_generation >= now) {
|
||||
slogger.warn("Using stored Gossip Generation {} as it is greater than current system time {}."
|
||||
"See CASSANDRA-3654 if you experience problems", stored_generation, now);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <chrono>
|
||||
#include "generation-number.hh"
|
||||
|
||||
namespace utils {
|
||||
namespace gms {
|
||||
|
||||
int get_generation_number() {
|
||||
using namespace std::chrono;
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace utils {
|
||||
namespace gms {
|
||||
|
||||
int get_generation_number();
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#include <boost/range/algorithm/partition.hpp>
|
||||
#include <boost/algorithm/string/split.hpp>
|
||||
#include <boost/algorithm/string/classification.hpp>
|
||||
#include "utils/generation-number.hh"
|
||||
#include "gms/generation-number.hh"
|
||||
#include "locator/token_metadata.hh"
|
||||
#include "utils/exceptions.hh"
|
||||
|
||||
@@ -567,7 +567,7 @@ future<> gossiper::do_apply_state_locally(gms::inet_address node, const endpoint
|
||||
int local_generation = local_state.get_heart_beat_state().get_generation();
|
||||
int remote_generation = remote_state.get_heart_beat_state().get_generation();
|
||||
logger.trace("{} local generation {}, remote generation {}", node, local_generation, remote_generation);
|
||||
if (remote_generation > utils::get_generation_number() + MAX_GENERATION_DIFFERENCE) {
|
||||
if (remote_generation > get_generation_number() + MAX_GENERATION_DIFFERENCE) {
|
||||
// assume some peer has corrupted memory and is broadcasting an unbelievable generation about another peer (or itself)
|
||||
logger.warn("received an invalid gossip generation for peer {}; local generation = {}, received generation = {}",
|
||||
node, local_generation, remote_generation);
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
#include "repair/repair.hh"
|
||||
#include "repair/row_level.hh"
|
||||
#include "service/priority_manager.hh"
|
||||
#include "utils/generation-number.hh"
|
||||
#include "gms/generation-number.hh"
|
||||
#include <seastar/core/coroutine.hh>
|
||||
#include <seastar/coroutine/maybe_yield.hh>
|
||||
#include <seastar/coroutine/parallel_for_each.hh>
|
||||
@@ -2948,7 +2948,7 @@ future<> storage_service::start_gossiping() {
|
||||
co_await ss._sys_ks.local().get_local_tokens(),
|
||||
cdc_gen_ts);
|
||||
ss._gossiper.force_newer_generation();
|
||||
co_await ss._gossiper.start_gossiping(utils::get_generation_number());
|
||||
co_await ss._gossiper.start_gossiping(gms::get_generation_number());
|
||||
} catch (...) {
|
||||
should_stop_gossiper = true;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ target_sources(utils
|
||||
error_injection.cc
|
||||
exceptions.cc
|
||||
file_lock.cc
|
||||
generation-number.cc
|
||||
gz/crc_combine.cc
|
||||
gz/crc_combine_table.cc
|
||||
hashers.cc
|
||||
|
||||
Reference in New Issue
Block a user