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:
@@ -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>&>;
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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;
|
||||
/**
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user