storage_service: add WRITE_FAILURE_REPLY_FEATURE feature

Presence of the flag indicates that the node is ready to process
negative mutation write replies.
This commit is contained in:
Gleb Natapov
2017-12-04 13:55:36 +02:00
parent fb8a626813
commit 0be3bd383b
2 changed files with 9 additions and 0 deletions

View File

@@ -90,6 +90,7 @@ static const sstring DIGEST_MULTIPARTITION_READ_FEATURE = "DIGEST_MULTIPARTITION
static const sstring CORRECT_COUNTER_ORDER_FEATURE = "CORRECT_COUNTER_ORDER";
static const sstring SCHEMA_TABLES_V3 = "SCHEMA_TABLES_V3";
static const sstring CORRECT_NON_COMPOUND_RANGE_TOMBSTONES = "CORRECT_NON_COMPOUND_RANGE_TOMBSTONES";
static const sstring WRITE_FAILURE_REPLY_FEATURE = "WRITE_FAILURE_REPLY";
distributed<storage_service> _the_storage_service;
@@ -136,6 +137,7 @@ sstring storage_service::get_config_supported_features() {
CORRECT_COUNTER_ORDER_FEATURE,
SCHEMA_TABLES_V3,
CORRECT_NON_COMPOUND_RANGE_TOMBSTONES,
WRITE_FAILURE_REPLY_FEATURE,
};
if (service::get_local_storage_service()._db.local().get_config().experimental()) {
features.push_back(MATERIALIZED_VIEWS_FEATURE);
@@ -347,6 +349,7 @@ void storage_service::register_features() {
_correct_counter_order_feature = gms::feature(CORRECT_COUNTER_ORDER_FEATURE);
_schema_tables_v3 = gms::feature(SCHEMA_TABLES_V3);
_correct_non_compound_range_tombstones = gms::feature(CORRECT_NON_COMPOUND_RANGE_TOMBSTONES);
_write_failure_reply_feature = gms::feature(WRITE_FAILURE_REPLY_FEATURE);
if (_db.local().get_config().experimental()) {
_materialized_views_feature = gms::feature(MATERIALIZED_VIEWS_FEATURE);

View File

@@ -270,6 +270,7 @@ private:
gms::feature _correct_counter_order_feature;
gms::feature _schema_tables_v3;
gms::feature _correct_non_compound_range_tombstones;
gms::feature _write_failure_reply_feature;
public:
void enable_all_features() {
_range_tombstones_feature.enable();
@@ -281,6 +282,7 @@ public:
_correct_counter_order_feature.enable();
_schema_tables_v3.enable();
_correct_non_compound_range_tombstones.enable();
_write_failure_reply_feature.enable();
}
void finish_bootstrapping() {
@@ -2249,6 +2251,10 @@ public:
bool cluster_supports_reading_correctly_serialized_range_tombstones() const {
return bool(_correct_non_compound_range_tombstones);
}
bool node_supports_write_failure_reply(gms::inet_address ep) const {
return gms::get_local_gossiper().node_has_feature(ep, _write_failure_reply_feature);
}
};
inline future<> init_storage_service(distributed<database>& db, sharded<auth::service>& auth_service) {