* circumstances.
*/
Message *m = op->get_req();
+ MonSession *s = op->get_session();
ConnectionRef con = op->get_connection();
utime_t too_old = ceph_clock_now(g_ceph_context);
too_old -= g_ceph_context->_conf->mon_lease;
} else {
dout(5) << "discarding message " << *m << " and sending client elsewhere" << dendl;
con->mark_down();
+ remove_session(s);
op->mark_zap();
}
}
return;
}
- if (!exited_quorum.is_zero() && !src_is_mon) {
- waitlist_or_zap_client(op);
- return;
- }
-
dout(10) << "do not have session, making new one" << dendl;
s = session_map.new_session(m->get_source_inst(), m->get_connection().get());
assert(s);
}
dout(20) << " caps " << s->caps.get_str() << dendl;
- if (is_synchronizing() && !src_is_mon) {
+ if ((is_synchronizing() ||
+ (s->global_id == 0 && !exited_quorum.is_zero())) &&
+ !src_is_mon) {
waitlist_or_zap_client(op);
} else {
dispatch_op(op);