replication_strategy: keep a const token_metadata&

replication strategies don't need to change token_metadata.

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
This commit is contained in:
Benny Halevy
2020-08-17 13:22:44 +03:00
parent 2fd59e8bba
commit 4dba81cb92
12 changed files with 23 additions and 23 deletions

View File

@@ -871,7 +871,7 @@ bool database::column_family_exists(const utils::UUID& uuid) const {
}
void
keyspace::create_replication_strategy(locator::token_metadata& tm, const std::map<sstring, sstring>& options) {
keyspace::create_replication_strategy(const locator::token_metadata& tm, const std::map<sstring, sstring>& options) {
using namespace locator;
_replication_strategy =
@@ -1011,7 +1011,7 @@ const column_family& database::find_column_family(const schema_ptr& schema) cons
using strategy_class_registry = class_registry<
locator::abstract_replication_strategy,
const sstring&,
locator::token_metadata&,
const locator::token_metadata&,
locator::snitch_ptr&,
const std::map<sstring, sstring>&>;

View File

@@ -1157,7 +1157,7 @@ public:
* boom, it is replaced.
*/
lw_shared_ptr<keyspace_metadata> metadata() const;
void create_replication_strategy(locator::token_metadata& tm, const std::map<sstring, sstring>& options);
void create_replication_strategy(const locator::token_metadata& tm, const std::map<sstring, sstring>& options);
/**
* This should not really be return by reference, since replication
* strategy is also volatile in that it could be replaced at "any" time.

View File

@@ -30,7 +30,7 @@ logging::logger abstract_replication_strategy::logger("replication_strategy");
abstract_replication_strategy::abstract_replication_strategy(
const sstring& ks_name,
token_metadata& token_metadata,
const token_metadata& token_metadata,
snitch_ptr& snitch,
const std::map<sstring, sstring>& config_options,
replication_strategy_type my_type)
@@ -40,12 +40,12 @@ abstract_replication_strategy::abstract_replication_strategy(
, _snitch(snitch)
, _my_type(my_type) {}
std::unique_ptr<abstract_replication_strategy> abstract_replication_strategy::create_replication_strategy(const sstring& ks_name, const sstring& strategy_name, token_metadata& tk_metadata, const std::map<sstring, sstring>& config_options) {
std::unique_ptr<abstract_replication_strategy> abstract_replication_strategy::create_replication_strategy(const sstring& ks_name, const sstring& strategy_name, const token_metadata& tk_metadata, const std::map<sstring, sstring>& config_options) {
assert(locator::i_endpoint_snitch::get_local_snitch_ptr());
try {
return create_object<abstract_replication_strategy,
const sstring&,
token_metadata&,
const token_metadata&,
snitch_ptr&,
const std::map<sstring, sstring>&>
(strategy_name, ks_name, tk_metadata,
@@ -57,7 +57,7 @@ std::unique_ptr<abstract_replication_strategy> abstract_replication_strategy::cr
void abstract_replication_strategy::validate_replication_strategy(const sstring& ks_name,
const sstring& strategy_name,
token_metadata& token_metadata,
const token_metadata& token_metadata,
const std::map<sstring, sstring>& config_options)
{
auto strategy = create_replication_strategy(ks_name, strategy_name, token_metadata, config_options);

View File

@@ -59,7 +59,7 @@ protected:
// TODO: Do we need this member at all?
//keyspace* _keyspace = nullptr;
std::map<sstring, sstring> _config_options;
token_metadata& _token_metadata;
const token_metadata& _token_metadata;
snitch_ptr& _snitch;
replication_strategy_type _my_type;
@@ -83,16 +83,16 @@ protected:
public:
abstract_replication_strategy(
const sstring& keyspace_name,
token_metadata& token_metadata,
const token_metadata& token_metadata,
snitch_ptr& snitch,
const std::map<sstring, sstring>& config_options,
replication_strategy_type my_type);
virtual std::vector<inet_address> calculate_natural_endpoints(const token& search_token, const token_metadata& tm) const = 0;
virtual ~abstract_replication_strategy() {}
static std::unique_ptr<abstract_replication_strategy> create_replication_strategy(const sstring& ks_name, const sstring& strategy_name, token_metadata& token_metadata, const std::map<sstring, sstring>& config_options);
static std::unique_ptr<abstract_replication_strategy> create_replication_strategy(const sstring& ks_name, const sstring& strategy_name, const token_metadata& token_metadata, const std::map<sstring, sstring>& config_options);
static void validate_replication_strategy(const sstring& ks_name,
const sstring& strategy_name,
token_metadata& token_metadata,
const token_metadata& token_metadata,
const std::map<sstring, sstring>& config_options);
virtual std::vector<inet_address> get_natural_endpoints(const token& search_token);
virtual std::vector<inet_address> get_natural_endpoints_without_node_being_replaced(const token& search_token);

View File

@@ -43,7 +43,7 @@
namespace locator {
everywhere_replication_strategy::everywhere_replication_strategy(const sstring& keyspace_name, token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options) :
everywhere_replication_strategy::everywhere_replication_strategy(const sstring& keyspace_name, const token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options) :
abstract_replication_strategy(keyspace_name, token_metadata, snitch, config_options, replication_strategy_type::everywhere_topology) {}
std::vector<inet_address> everywhere_replication_strategy::get_natural_endpoints(const token& search_token) {
@@ -53,7 +53,7 @@ std::vector<inet_address> everywhere_replication_strategy::get_natural_endpoints
return calculate_natural_endpoints(search_token, _token_metadata);
}
using registry = class_registrator<abstract_replication_strategy, everywhere_replication_strategy, const sstring&, token_metadata&, snitch_ptr&, const std::map<sstring, sstring>&>;
using registry = class_registrator<abstract_replication_strategy, everywhere_replication_strategy, const sstring&, const token_metadata&, snitch_ptr&, const std::map<sstring, sstring>&>;
static registry registrator("org.apache.cassandra.locator.EverywhereStrategy");
static registry registrator_short_name("EverywhereStrategy");
}

View File

@@ -44,7 +44,7 @@
namespace locator {
class everywhere_replication_strategy : public abstract_replication_strategy {
public:
everywhere_replication_strategy(const sstring& keyspace_name, token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring,sstring>& config_options);
everywhere_replication_strategy(const sstring& keyspace_name, const token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring,sstring>& config_options);
virtual std::vector<inet_address> calculate_natural_endpoints(const token& search_token, const token_metadata& tm) const override {
return tm.get_all_endpoints();

View File

@@ -27,7 +27,7 @@
namespace locator {
local_strategy::local_strategy(const sstring& keyspace_name, token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options) :
local_strategy::local_strategy(const sstring& keyspace_name, const token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options) :
abstract_replication_strategy(keyspace_name, token_metadata, snitch, config_options, replication_strategy_type::local) {}
std::vector<inet_address> local_strategy::get_natural_endpoints(const token& t) {
@@ -50,7 +50,7 @@ size_t local_strategy::get_replication_factor() const {
return 1;
}
using registry = class_registrator<abstract_replication_strategy, local_strategy, const sstring&, token_metadata&, snitch_ptr&, const std::map<sstring, sstring>&>;
using registry = class_registrator<abstract_replication_strategy, local_strategy, const sstring&, const token_metadata&, snitch_ptr&, const std::map<sstring, sstring>&>;
static registry registrator("org.apache.cassandra.locator.LocalStrategy");
static registry registrator_short_name("LocalStrategy");

View File

@@ -38,7 +38,7 @@ class local_strategy : public abstract_replication_strategy {
protected:
virtual std::vector<inet_address> calculate_natural_endpoints(const token& search_token, const token_metadata& tm) const override;
public:
local_strategy(const sstring& keyspace_name, token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options);
local_strategy(const sstring& keyspace_name, const token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options);
virtual ~local_strategy() {};
virtual size_t get_replication_factor() const;
/**

View File

@@ -59,7 +59,7 @@ bool operator==(const endpoint_dc_rack& d1, const endpoint_dc_rack& d2) {
network_topology_strategy::network_topology_strategy(
const sstring& keyspace_name,
token_metadata& token_metadata,
const token_metadata& token_metadata,
snitch_ptr& snitch,
const std::map<sstring, sstring>& config_options) :
abstract_replication_strategy(keyspace_name,
@@ -274,7 +274,7 @@ std::optional<std::set<sstring>> network_topology_strategy::recognized_options()
return std::nullopt;
}
using registry = class_registrator<abstract_replication_strategy, network_topology_strategy, const sstring&, token_metadata&, snitch_ptr&, const std::map<sstring, sstring>&>;
using registry = class_registrator<abstract_replication_strategy, network_topology_strategy, const sstring&, const token_metadata&, snitch_ptr&, const std::map<sstring, sstring>&>;
static registry registrator("org.apache.cassandra.locator.NetworkTopologyStrategy");
static registry registrator_short_name("NetworkTopologyStrategy");
}

View File

@@ -49,7 +49,7 @@ class network_topology_strategy : public abstract_replication_strategy {
public:
network_topology_strategy(
const sstring& keyspace_name,
token_metadata& token_metadata,
const token_metadata& token_metadata,
snitch_ptr& snitch,
const std::map<sstring,sstring>& config_options);

View File

@@ -27,7 +27,7 @@
namespace locator {
simple_strategy::simple_strategy(const sstring& keyspace_name, token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options) :
simple_strategy::simple_strategy(const sstring& keyspace_name, const token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options) :
abstract_replication_strategy(keyspace_name, token_metadata, snitch, config_options, replication_strategy_type::simple) {
for (auto& config_pair : config_options) {
auto& key = config_pair.first;
@@ -82,7 +82,7 @@ std::optional<std::set<sstring>>simple_strategy::recognized_options() const {
return {{ "replication_factor" }};
}
using registry = class_registrator<abstract_replication_strategy, simple_strategy, const sstring&, token_metadata&, snitch_ptr&, const std::map<sstring, sstring>&>;
using registry = class_registrator<abstract_replication_strategy, simple_strategy, const sstring&, const token_metadata&, snitch_ptr&, const std::map<sstring, sstring>&>;
static registry registrator("org.apache.cassandra.locator.SimpleStrategy");
static registry registrator_short_name("SimpleStrategy");

View File

@@ -32,7 +32,7 @@ class simple_strategy : public abstract_replication_strategy {
protected:
virtual std::vector<inet_address> calculate_natural_endpoints(const token& search_token, const token_metadata& tm) const override;
public:
simple_strategy(const sstring& keyspace_name, token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options);
simple_strategy(const sstring& keyspace_name, const token_metadata& token_metadata, snitch_ptr& snitch, const std::map<sstring, sstring>& config_options);
virtual ~simple_strategy() {};
virtual size_t get_replication_factor() const override;
virtual void validate_options() const override;