dout(10) << sizeof(Capability) << "\tCapability" << dendl;
dout(10) << sizeof(xlist<void*>::item) << "\txlist<>::item" << dendl;
- messenger->add_dispatcher_tail(&beacon);
- messenger->add_dispatcher_tail(this);
+ // Ensure beacons are processed ahead of most other dispatchers.
+ messenger->add_dispatcher_head(&beacon, Dispatcher::PRIORITY_HIGH);
+ // order last as MDSDaemon::ms_dispatch2 first acquires the mds_lock
+ messenger->add_dispatcher_head(this, Dispatcher::PRIORITY_LOW);
// init monc
monc->set_messenger(messenger);
void MDSRankDispatcher::init()
{
objecter->init();
- messenger->add_dispatcher_head(objecter);
+ messenger->add_dispatcher_tail(objecter); // the default priority
objecter->start();
dout(10) << __func__ << ": initializing metrics handler" << dendl;
metrics_handler.init();
- messenger->add_dispatcher_tail(&metrics_handler);
+ messenger->add_dispatcher_tail(&metrics_handler, Dispatcher::PRIORITY_HIGH);
// metric aggregation is solely done by rank 0
if (is_rank0()) {
messenger = Messenger::create_client_messenger(
cct, "temp_mon_client");
ceph_assert(messenger);
- messenger->add_dispatcher_head(this);
+ messenger->add_dispatcher_head(this, Dispatcher::PRIORITY_HIGH);
messenger->start();
auto shutdown_msgr = make_scope_guard([this] {
messenger->shutdown();
result_reply);
Messenger *smsgr = Messenger::create_client_messenger(cct, "temp_ping_client");
- smsgr->add_dispatcher_head(pinger);
+ smsgr->add_dispatcher_head(pinger, Dispatcher::PRIORITY_HIGH);
smsgr->set_auth_client(pinger);
smsgr->start();
initialized = true;
messenger->set_auth_client(this);
- messenger->add_dispatcher_head(this);
+ messenger->add_dispatcher_head(this, Dispatcher::PRIORITY_HIGH);
timer.init();
schedule_tick();