diff --git a/service/storage_service.cc b/service/storage_service.cc index d559653f85..d30c2a7881 100644 --- a/service/storage_service.cc +++ b/service/storage_service.cc @@ -360,12 +360,12 @@ future<> storage_service::bootstrap(std::unordered_set tokens) { _token_metadata.update_normal_tokens(tokens, get_broadcast_address()); // SystemKeyspace.removeEndpoint(DatabaseDescriptor.getReplaceAddress()); } - return sleep(sleep_time).then([tokens = std::move(tokens)] { + return sleep(sleep_time).then([this, tokens = std::move(tokens)] { auto& gossiper = gms::get_local_gossiper(); if (!gossiper.seen_any_seed()) { throw std::runtime_error("Unable to contact any seeds!"); } - // setMode(Mode.JOINING, "Starting to bootstrap...", true); + this->set_mode(Mode::JOINING, "Starting to bootstrap...", true); // new BootStrapper(FBUtilities.getBroadcastAddress(), tokens, _token_metadata).bootstrap(); // handles token update logger.info("Bootstrap completed! for the tokens {}", tokens); return make_ready_future<>(); @@ -1060,5 +1060,33 @@ std::unordered_set storage_service::prepare_replacement_info() { #endif } +static const std::map mode_names = { + {storage_service::mode::STARTING, "STARTING"}, + {storage_service::mode::NORMAL, "NORMAL"}, + {storage_service::mode::JOINING, "JOINING"}, + {storage_service::mode::LEAVING, "LEAVING"}, + {storage_service::mode::DECOMMISSIONED, "DECOMMISSIONED"}, + {storage_service::mode::MOVING, "MOVING"}, + {storage_service::mode::DRAINING, "DRAINING"}, + {storage_service::mode::DRAINED, "DRAINED"}, +}; + +std::ostream& operator<<(std::ostream& os, const storage_service::mode& m) { + os << mode_names.at(m); + return os; +} + +void storage_service::set_mode(mode m, bool log) { + set_mode(m, "", log); +} + +void storage_service::set_mode(mode m, sstring msg, bool log) { + _operation_mode = m; + if (log) { + logger.info("{}: {}", m, msg); + } else { + logger.debug("{}: {}", m, msg); + } +} } // namespace service diff --git a/service/storage_service.hh b/service/storage_service.hh index 62a2821a87..67de5c9c05 100644 --- a/service/storage_service.hh +++ b/service/storage_service.hh @@ -139,13 +139,15 @@ private: bool _joined = false; +public: + enum class mode { STARTING, NORMAL, JOINING, LEAVING, DECOMMISSIONED, MOVING, DRAINING, DRAINED }; +private: + mode _operation_mode = mode::STARTING; + friend std::ostream& operator<<(std::ostream& os, const mode& mode); #if 0 /* the probability for tracing any particular request, 0 disables tracing and 1 enables for all */ private double traceProbability = 0.0; - private static enum Mode { STARTING, NORMAL, JOINING, LEAVING, DECOMMISSIONED, MOVING, DRAINING, DRAINED } - private Mode operationMode = Mode.STARTING; - /* Used for tracking drain progress */ private volatile int totalCFs, remainingCFs; @@ -427,23 +429,12 @@ public: { DatabaseDescriptor.setIncrementalBackupsEnabled(value); } - - private void setMode(Mode m, boolean log) - { - setMode(m, null, log); - } - - private void setMode(Mode m, String msg, boolean log) - { - operationMode = m; - String logMsg = msg == null ? m.toString() : String.format("%s: %s", m, msg); - if (log) - logger.info(logMsg); - else - logger.debug(logMsg); - } #endif +private: + void set_mode(mode m, bool log); + void set_mode(mode m, sstring msg, bool log); +public: future<> bootstrap(std::unordered_set tokens); bool is_bootstrap_mode() {