From 6f919f1f36eac680c69504bfea76c8281d6c7229 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 31 Aug 2009 14:12:58 -0700 Subject: [PATCH] msgr: deliver resets to all dispatchers; make naming consistent --- src/ceph.cc | 2 +- src/client/Client.cc | 2 +- src/client/Client.h | 2 +- src/common/LogClient.cc | 2 +- src/common/LogClient.h | 2 +- src/dumpjournal.cc | 2 +- src/librados.cc | 4 ++-- src/mds/MDS.cc | 2 +- src/mds/MDS.h | 2 +- src/mon/MonClient.cc | 2 +- src/mon/MonClient.h | 2 +- src/mon/Monitor.cc | 2 +- src/mon/Monitor.h | 2 +- src/msg/Dispatcher.h | 29 +++++++++++++++++++++++------ src/msg/Messenger.h | 2 +- src/msg/SimpleMessenger.cc | 6 +++--- src/osd/OSD.cc | 2 +- src/osd/OSD.h | 4 ++-- src/testmsgr.cc | 2 +- 19 files changed, 45 insertions(+), 28 deletions(-) diff --git a/src/ceph.cc b/src/ceph.cc index 117db544a8ef0..f336a2a16a0cf 100644 --- a/src/ceph.cc +++ b/src/ceph.cc @@ -336,7 +336,7 @@ void handle_ack(MMonCommandAck *ack) } class Admin : public Dispatcher { - bool dispatch_impl(Message *m) { + bool ms_dispatch(Message *m) { switch (m->get_type()) { case MSG_MON_COMMAND_ACK: handle_ack((MMonCommandAck*)m); diff --git a/src/client/Client.cc b/src/client/Client.cc index dfbf568f2847b..bdf15642be0c5 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -1085,7 +1085,7 @@ void Client::handle_client_reply(MClientReply *reply) // ------------------------ // incoming messages -bool Client::dispatch_impl(Message *m) +bool Client::ms_dispatch(Message *m) { client_lock.Lock(); diff --git a/src/client/Client.h b/src/client/Client.h index 6552c12593e74..059482326368a 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -967,7 +967,7 @@ protected: // friends friend class SyntheticClient; - bool dispatch_impl(Message *m); + bool ms_dispatch(Message *m); public: Client(Messenger *m, MonClient *mc); diff --git a/src/common/LogClient.cc b/src/common/LogClient.cc index 039feb1c60df5..f42de364afab3 100644 --- a/src/common/LogClient.cc +++ b/src/common/LogClient.cc @@ -102,7 +102,7 @@ void LogClient::handle_log_ack(MLogAck *m) delete m; } -bool LogClient::dispatch_impl(Message *m) +bool LogClient::ms_dispatch(Message *m) { dout(20) << "dispatch " << m << dendl; diff --git a/src/common/LogClient.h b/src/common/LogClient.h index caa93114917d0..4ecf66d82a1c1 100644 --- a/src/common/LogClient.h +++ b/src/common/LogClient.h @@ -32,7 +32,7 @@ class LogClient : public Dispatcher { Messenger *messenger; MonMap *monmap; - bool dispatch_impl(Message *m); + bool ms_dispatch(Message *m); bool is_synchronous; void _send_log(); diff --git a/src/dumpjournal.cc b/src/dumpjournal.cc index 5906565f1f559..c6d9895bd1c3d 100644 --- a/src/dumpjournal.cc +++ b/src/dumpjournal.cc @@ -49,7 +49,7 @@ Objecter *objecter = 0; Journaler *journaler = 0; class Dumper : public Dispatcher { - bool dispatch_impl(Message *m) { + bool ms_dispatch(Message *m) { switch (m->get_type()) { case CEPH_MSG_OSD_OPREPLY: objecter->handle_osd_op_reply((MOSDOpReply *)m); diff --git a/src/librados.cc b/src/librados.cc index de5c224ec6e3b..4ee02c41f80cf 100644 --- a/src/librados.cc +++ b/src/librados.cc @@ -57,7 +57,7 @@ class RadosClient : public Dispatcher SimpleMessenger rank; bool _dispatch(Message *m); - bool dispatch_impl(Message *m); + bool ms_dispatch(Message *m); Objecter *objecter; @@ -335,7 +335,7 @@ RadosClient::~RadosClient() } -bool RadosClient::dispatch_impl(Message *m) +bool RadosClient::ms_dispatch(Message *m) { bool ret; diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index fb1efddd429b9..452e4b935fcae 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -1146,7 +1146,7 @@ void MDS::suicide() -bool MDS::dispatch_impl(Message *m) +bool MDS::ms_dispatch(Message *m) { bool ret; diff --git a/src/mds/MDS.h b/src/mds/MDS.h index 57a1d20021f46..d3e9a94b458c8 100644 --- a/src/mds/MDS.h +++ b/src/mds/MDS.h @@ -303,7 +303,7 @@ class MDS : public Dispatcher { int get_req_rate() { return req_rate; } private: - virtual bool dispatch_impl(Message *m); + virtual bool ms_dispatch(Message *m); public: MDS(const char *n, Messenger *m, MonClient *mc); ~MDS(); diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 7a5e0dbf58a28..44022424efb03 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -150,7 +150,7 @@ int MonClient::get_monmap() } -bool MonClient::dispatch_impl(Message *m) +bool MonClient::ms_dispatch(Message *m) { dout(10) << "dispatch " << *m << dendl; diff --git a/src/mon/MonClient.h b/src/mon/MonClient.h index b658db4fde8da..8ed4054c9b81e 100644 --- a/src/mon/MonClient.h +++ b/src/mon/MonClient.h @@ -45,7 +45,7 @@ private: int mounters; Cond mount_cond, map_cond; - bool dispatch_impl(Message *m); + bool ms_dispatch(Message *m); void handle_monmap(MMonMap *m); void ms_handle_reset(const entity_addr_t& peer); diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 59b76809dd552..360fcc5532889 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -354,7 +354,7 @@ void Monitor::stop_cluster() } -bool Monitor::dispatch_impl(Message *m) +bool Monitor::ms_dispatch(Message *m) { // verify protocol version if (m->get_orig_source().is_mon() && diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index 192f9c593fa7a..09d26ffd0b60d 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -166,7 +166,7 @@ public: }; private: - bool dispatch_impl(Message *m); + bool ms_dispatch(Message *m); public: Monitor(int w, MonitorStore *s, Messenger *m, MonMap *map); diff --git a/src/msg/Dispatcher.h b/src/msg/Dispatcher.h index 3f06a54e7afef..da7298a94bf8f 100644 --- a/src/msg/Dispatcher.h +++ b/src/msg/Dispatcher.h @@ -25,18 +25,18 @@ class Dispatcher { Dispatcher *next; // how i receive messages - virtual bool dispatch_impl(Message *m) = 0; - bool _dispatch(Message *m) { + virtual bool ms_dispatch(Message *m) = 0; + bool _ms_deliver_dispatch(Message *m) { bool ret = false; if (next) - ret = next->_dispatch(m); + ret = next->_ms_deliver_dispatch(m); if (!ret) - ret = dispatch_impl(m); + ret = ms_dispatch(m); return ret; } public: - virtual void dispatch(Message *m) { - if (!_dispatch(m)) { + void ms_deliver_dispatch(Message *m) { + if (!_ms_deliver_dispatch(m)) { generic_dout(0) << "unhandled message " << m << " " << *m << " from " << m->get_orig_source_inst() << dendl; @@ -44,6 +44,23 @@ public: } } + void ms_deliver_handle_reset(const entity_addr_t& peer) { + ms_handle_reset(peer); + if (next) + next->ms_handle_reset(peer); + } + void ms_deliver_handle_remote_reset(const entity_addr_t& peer) { + ms_handle_remote_reset(peer); + if (next) + next->ms_handle_remote_reset(peer); + } + void ms_deliver_handle_failure(Message *m, const entity_addr_t& peer) { + ms_handle_failure(m, peer); + if (next) + next->ms_handle_failure(m, peer); + } + + public: virtual ~Dispatcher() { } Dispatcher() : next(NULL) { } diff --git a/src/msg/Messenger.h b/src/msg/Messenger.h index 8d28ebc5fdc69..e37e4df701c1a 100644 --- a/src/msg/Messenger.h +++ b/src/msg/Messenger.h @@ -91,7 +91,7 @@ protected: // dispatch incoming messages virtual void dispatch(Message *m) { assert(dispatcher); - dispatcher->dispatch(m); + dispatcher->ms_deliver_dispatch(m); } // shutdown diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 26850796f5865..6f960b7f0cd74 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -289,20 +289,20 @@ void SimpleMessenger::Endpoint::dispatch_entry() entity_addr_t a = remote_reset_q.front(); remote_reset_q.pop_front(); lock.Unlock(); - get_dispatcher()->ms_handle_remote_reset(a); + get_dispatcher()->ms_deliver_handle_remote_reset(a); } else if ((long)m == BAD_RESET) { lock.Lock(); entity_addr_t a = reset_q.front(); reset_q.pop_front(); lock.Unlock(); - get_dispatcher()->ms_handle_reset(a); + get_dispatcher()->ms_deliver_handle_reset(a); } else if ((long)m == BAD_FAILED) { lock.Lock(); m = failed_q.front().first; entity_addr_t a = failed_q.front().second; failed_q.pop_front(); lock.Unlock(); - get_dispatcher()->ms_handle_failure(m, a); + get_dispatcher()->ms_deliver_handle_failure(m, a); m->put(); } else { dout(1) << "<== " << m->get_source_inst() diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 7ec176d823551..88c6bd1edc979 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1476,7 +1476,7 @@ bool OSD::heartbeat_dispatch(Message *m) return true; } -bool OSD::dispatch_impl(Message *m) +bool OSD::ms_dispatch(Message *m) { // verify protocol version if (m->get_orig_source().is_osd() && diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 1490d15a76276..b9052abf89687 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -204,7 +204,7 @@ public: struct HeartbeatDispatcher : public Dispatcher { private: - bool dispatch_impl(Message *m) { + bool ms_dispatch(Message *m) { return osd->heartbeat_dispatch(m); }; public: @@ -812,7 +812,7 @@ protected: } remove_wq; private: - virtual bool dispatch_impl(Message *m); + virtual bool ms_dispatch(Message *m); public: OSD(int id, Messenger *m, Messenger *hbm, MonClient *mc, const char *dev = 0, const char *jdev = 0); ~OSD(); diff --git a/src/testmsgr.cc b/src/testmsgr.cc index 9deaccf271691..0359881034a50 100644 --- a/src/testmsgr.cc +++ b/src/testmsgr.cc @@ -44,7 +44,7 @@ Cond cond; __u64 received = 0; class Admin : public Dispatcher { - bool dispatch_impl(Message *m) { + bool ms_dispatch(Message *m) { //cerr << "got ping from " << m->get_source() << std::endl; dout(0) << "got ping from " << m->get_source() << dendl; -- 2.39.5