#include "messages/MGenericMessage.h"
#include "messages/MMonCommand.h"
#include "messages/MMonCommandAck.h"
-#include "messages/MMonMetadata.h"
#include "messages/MMonSync.h"
#include "messages/MMonScrub.h"
#include "messages/MMonProbe.h"
configmon()->handle_get_config(op);
return;
- case CEPH_MSG_MON_METADATA:
- return handle_mon_metadata(op);
-
case CEPH_MSG_MON_SUBSCRIBE:
/* FIXME: check what's being subscribed, filter accordingly */
handle_subscribe(op);
send_latest_monmap(m->get_connection().get());
}
-void Monitor::handle_mon_metadata(MonOpRequestRef op)
-{
- auto m = op->get_req<MMonMetadata>();
- if (is_leader()) {
- dout(10) << __func__ << dendl;
- update_mon_metadata(m->get_source().num(), std::move(m->data));
- }
-}
-
-void Monitor::update_mon_metadata(int from, Metadata&& m)
-{
- // NOTE: this is now for legacy (kraken or jewel) mons only.
- pending_metadata[from] = std::move(m);
-
- MonitorDBStore::TransactionRef t = paxos->get_pending_transaction();
- bufferlist bl;
- encode(pending_metadata, bl);
- t->put(MONITOR_STORE_PREFIX, "last_metadata", bl);
- paxos->trigger_propose();
-}
-
int Monitor::load_metadata()
{
bufferlist bl;
void handle_command(MonOpRequestRef op);
void handle_route(MonOpRequestRef op);
- void handle_mon_metadata(MonOpRequestRef op);
int get_mon_metadata(int mon, ceph::Formatter *f, std::ostream& err);
int print_nodes(ceph::Formatter *f, std::ostream& err);
- // Accumulate metadata across calls to update_mon_metadata
+ // track metadata reported by win_election()
std::map<int, Metadata> mon_metadata;
std::map<int, Metadata> pending_metadata;
void extract_save_mon_key(KeyRing& keyring);
void collect_metadata(Metadata *m);
- void update_mon_metadata(int from, Metadata&& m);
int load_metadata();
void count_metadata(const std::string& field, ceph::Formatter *f);
void count_metadata(const std::string& field, std::map<std::string,int> *out);