private:
epoch_t epoch;
uint64_t version;
- map<int,ConnectionReport> peer_reports;
+ std::map<int,ConnectionReport> peer_reports;
ConnectionReport my_reports;
double half_life;
RankProvider *owner;
void notify_rank_removed(int rank_removed);
friend std::ostream& operator<<(std::ostream& o, const ConnectionTracker& c);
friend ConnectionReport *get_connection_reports(ConnectionTracker& ct);
- friend map<int,ConnectionReport> *get_peer_reports(ConnectionTracker& ct);
+ friend std::map<int,ConnectionReport> *get_peer_reports(ConnectionTracker& ct);
void dump(ceph::Formatter *f) const;
static void generate_test_instances(std::list<ConnectionTracker*>& o);
};
#define CEPH_ELECTIONLOGIC_H
#include <map>
+#include <set>
#include "include/types.h"
#include "ConnectionTracker.h"
* Like paxos_size(), This set can change between elections, but not
* during them.
*/
- virtual const set<int>& get_disallowed_leaders() const = 0;
+ virtual const std::set<int>& get_disallowed_leaders() const = 0;
/**
* Tell the ElectionOwner we have started a new election.
*
ElectionLogic logic;
// connectivity validation and scoring
ConnectionTracker peer_tracker;
- map<int, utime_t> peer_acked_ping; // rank -> last ping stamp they acked
- map<int, utime_t> peer_sent_ping; // rank -> last ping stamp we sent
- set<int> live_pinging; // ranks which we are currently pinging
- set<int> dead_pinging; // ranks which didn't answer (degrading scores)
+ std::map<int, utime_t> peer_acked_ping; // rank -> last ping stamp they acked
+ std::map<int, utime_t> peer_sent_ping; // rank -> last ping stamp we sent
+ std::set<int> live_pinging; // ranks which we are currently pinging
+ std::set<int> dead_pinging; // ranks which didn't answer (degrading scores)
double ping_timeout; // the timeout after which we consider a ping to be dead
int PING_DIVISOR = 2; // we time out pings
/* Retrieve monmap->size() */
unsigned paxos_size() const;
/* Right now we don't disallow anybody */
- set<int> disallowed_leaders;
- const set<int>& get_disallowed_leaders() const { return disallowed_leaders; }
+ std::set<int> disallowed_leaders;
+ const std::set<int>& get_disallowed_leaders() const { return disallowed_leaders; }
/**
* Reset the expire_event timer so we can limit the amount of time we
* will be electing. Clean up our peer_info.
* @returns false if the set is unchanged,
* true if the set changed
*/
- bool set_disallowed_leaders(const set<int>& dl) {
+ bool set_disallowed_leaders(const std::set<int>& dl) {
if (dl == disallowed_leaders) return false;
disallowed_leaders = dl;
return true;
#undef dout_prefix
#define dout_prefix _prefix(_dout, mon, this)
+using std::ostream;
+using std::ostringstream;
+using std::set;
+using std::string;
+using std::stringstream;
+
static ostream& _prefix(std::ostream *_dout, const Monitor &mon,
const KVMonitor *hmon) {
return *_dout << "mon." << mon.name << "@" << mon.rank
version_t version = 0;
std::map<std::string,std::optional<ceph::buffer::list>> pending;
- bool _have_prefix(const string &prefix);
+ bool _have_prefix(const std::string &prefix);
public:
KVMonitor(Monitor &m, Paxos &p, const std::string& service_name);
void init() override;
- void get_store_prefixes(set<string>& s) const override;
+ void get_store_prefixes(std::set<std::string>& s) const override;
bool preprocess_command(MonOpRequestRef op);
bool prepare_command(MonOpRequestRef op);
using std::list;
using std::map;
using std::make_pair;
+using std::multimap;
using std::ostream;
using std::ostringstream;
using std::pair;
void count_metadata(const std::string& field, ceph::Formatter *f);
public:
- void print_fs_summary(ostream& out) {
+ void print_fs_summary(std::ostream& out) {
get_fsmap().print_fs_summary(out);
}
void count_metadata(const std::string& field, std::map<std::string,int> *out);
void dump(ceph::Formatter *f) const;
static void generate_test_instances(std::list<MonCap*>& ls);
- std::vector<string> allowed_fs_names() const {
- std::vector<string> ret;
+ std::vector<std::string> allowed_fs_names() const {
+ std::vector<std::string> ret;
for (auto& g : grants) {
if (not g.fs_name.empty()) {
ret.push_back(g.fs_name);
return ret;
}
- bool fs_name_capable(const EntityName& ename, string_view fs_name,
+ bool fs_name_capable(const EntityName& ename, std::string_view fs_name,
__u8 mask) {
for (auto& g : grants) {
if (g.is_allow_all()) {
}
};
- void start_mon_command(const vector<string>& cmd, const bufferlist& inbl,
- bufferlist *outbl, string *outs,
+ void start_mon_command(const std::vector<std::string>& cmd, const bufferlist& inbl,
+ bufferlist *outbl, std::string *outs,
Context *onfinish) {
start_mon_command(cmd, inbl, ContextVerter(outs, outbl, onfinish));
}
void start_mon_command(int mon_rank,
- const vector<string>& cmd, const bufferlist& inbl,
- bufferlist *outbl, string *outs,
+ const std::vector<std::string>& cmd, const bufferlist& inbl,
+ bufferlist *outbl, std::string *outs,
Context *onfinish) {
start_mon_command(mon_rank, cmd, inbl, ContextVerter(outs, outbl, onfinish));
}
- void start_mon_command(const string &mon_name, ///< mon name, with mon. prefix
- const vector<string>& cmd, const bufferlist& inbl,
- bufferlist *outbl, string *outs,
+ void start_mon_command(const std::string &mon_name, ///< mon name, with mon. prefix
+ const std::vector<std::string>& cmd, const bufferlist& inbl,
+ bufferlist *outbl, std::string *outs,
Context *onfinish) {
start_mon_command(mon_name, cmd, inbl, ContextVerter(outs, outbl, onfinish));
}
#include "MonMap.h"
#include <algorithm>
+#include <sstream>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
using std::list;
using std::map;
using std::ostream;
+using std::ostringstream;
using std::set;
using std::string;
using std::vector;
election_strategy strategy = CLASSIC;
std::set<std::string> disallowed_leaders; // can't be leader under CONNECTIVITY/DISALLOW
bool stretch_mode_enabled = false;
- string tiebreaker_mon;
- set<string> stretch_marked_down_mons; // can't be leader until fully recovered
+ std::string tiebreaker_mon;
+ std::set<std::string> stretch_marked_down_mons; // can't be leader until fully recovered
public:
void calc_legacy_ranks();
bool stretch_mode_engaged{false};
bool degraded_stretch_mode{false};
bool recovering_stretch_mode{false};
- string stretch_bucket_divider;
- map<string, set<string>> dead_mon_buckets; // bucket->mon ranks, locations with no live mons
- set<string> up_mon_buckets; // locations with a live mon
+ std::string stretch_bucket_divider;
+ std::map<std::string, std::set<std::string>> dead_mon_buckets; // bucket->mon ranks, locations with no live mons
+ std::set<std::string> up_mon_buckets; // locations with a live mon
void do_stretch_mode_election_work();
bool session_stretch_allowed(MonSession *s, MonOpRequestRef& op);
void disconnect_disallowed_stretch_sessions();
void set_elector_disallowed_leaders(bool allow_election);
- map <string,string> crush_loc;
+ std::map<std::string,std::string> crush_loc;
bool need_set_crush_loc{false};
public:
bool is_stretch_mode() { return stretch_mode_engaged; }
*/
void try_engage_stretch_mode();
void maybe_go_degraded_stretch_mode();
- void trigger_degraded_stretch_mode(const set<string>& dead_mons,
- const set<int>& dead_buckets);
+ void trigger_degraded_stretch_mode(const std::set<std::string>& dead_mons,
+ const std::set<int>& dead_buckets);
void set_degraded_stretch_mode();
void go_recovery_stretch_mode();
void set_recovery_stretch_mode();
void trigger_healthy_stretch_mode();
void set_healthy_stretch_mode();
void enable_stretch_mode();
- void set_mon_crush_location(const string& loc);
+ void set_mon_crush_location(const std::string& loc);
private:
}
cmdmap_t cmdmap;
std::ostringstream ds;
- string prefix;
+ std::string prefix;
cmdmap_from_json(m->cmd, &cmdmap, ds);
cmd_getval(cmdmap, "prefix", prefix);
if (prefix != "config set" && prefix != "config-key set")
void count_metadata(const std::string& field, ceph::Formatter *f);
void count_metadata(const std::string& field, std::map<std::string,int> *out);
// get_all_versions() gathers version information from daemons for health check
- void get_all_versions(std::map<string, std::list<std::string>> &versions);
- void get_versions(std::map<string, std::list<std::string>> &versions);
+ void get_all_versions(std::map<std::string, std::list<std::string>> &versions);
+ void get_versions(std::map<std::string, std::list<std::string>> &versions);
// features
static CompatSet get_initial_supported_features();
* @param tiebreaker_mon: the name of the monitor to declare tiebreaker
* @param dividing_bucket: the bucket type (eg 'dc') that divides the cluster
*/
- void try_enable_stretch_mode(stringstream& ss, bool *okay,
+ void try_enable_stretch_mode(std::stringstream& ss, bool *okay,
int *errcode, bool commit,
- const string& tiebreaker_mon,
- const string& dividing_bucket);
+ const std::string& tiebreaker_mon,
+ const std::string& dividing_bucket);
public:
/**
* Set us to degraded stretch mode. Put the dead_mons in
* the MonMap.
*/
- void trigger_degraded_stretch_mode(const set<string>& dead_mons);
+ void trigger_degraded_stretch_mode(const std::set<std::string>& dead_mons);
/**
* Set us to healthy stretch mode: clear out the
* down list to allow any non-tiebreaker mon to be the leader again.
* This does not make any changes to the pools or state; it's just
* a safety-check-and-collect function.
*/
- void try_enable_stretch_mode_pools(stringstream& ss, bool *okay,
+ void try_enable_stretch_mode_pools(std::stringstream& ss, bool *okay,
int *errcode,
- set<pg_pool_t*>* pools, const string& new_crush_rule);
+ std::set<pg_pool_t*>* pools,
+ const std::string& new_crush_rule);
/**
* Check validity of inputs and OSD/CRUSH state to
* engage stretch mode. Designed to be used with
* from try_enable_stretch_mode_pools()).
* @param new_crush_rule: The crush rule to set the pools to.
*/
- void try_enable_stretch_mode(stringstream& ss, bool *okay,
+ void try_enable_stretch_mode(std::stringstream& ss, bool *okay,
int *errcode, bool commit,
- const string& dividing_bucket,
+ const std::string& dividing_bucket,
uint32_t bucket_count,
- const set<pg_pool_t*>& pools,
- const string& new_crush_rule);
+ const std::set<pg_pool_t*>& pools,
+ const std::string& new_crush_rule);
/**
* Check the input dead_buckets mapping (buckets->dead monitors) to see
* if the OSDs are also down. If so, fill in really_down_buckets and
* really_down_mons and return true; else return false.
*/
- bool check_for_dead_crush_zones(const map<string,set<string>>& dead_buckets,
- set<int> *really_down_buckets,
- set<string> *really_down_mons);
+ bool check_for_dead_crush_zones(const std::map<std::string,std::set<std::string>>& dead_buckets,
+ std::set<int> *really_down_buckets,
+ std::set<std::string> *really_down_mons);
/**
* Set degraded mode in the OSDMap, adding the given dead buckets to the dead set
* and using the live_zones (should presently be size 1)
*/
- void trigger_degraded_stretch_mode(const set<int>& dead_buckets,
- const set<string>& live_zones);
+ void trigger_degraded_stretch_mode(const std::set<int>& dead_buckets,
+ const std::set<std::string>& live_zones);
/**
* This is just to maintain stretch_recovery_triggered; below
*/
get_peer_socket_addr());
}
- std::vector<string> get_allowed_fs_names() const {
+ std::vector<std::string> get_allowed_fs_names() const {
return caps.allowed_fs_names();
}
- bool fs_name_capable(string_view fsname, __u8 mask) {
+ bool fs_name_capable(std::string_view fsname, __u8 mask) {
return caps.fs_name_capable(entity_name, fsname, mask);
}