Occasionally we send them messages.
Signed-off-by: Sage Weil <sage@redhat.com>
}
}
con->set_priv(s->get());
+
+ if (peer_type == CEPH_ENTITY_TYPE_OSD) {
+ Mutex::Locker l(lock);
+ s->osd_id = atoi(s->entity_name.get_id().c_str());
+ dout(10) << __func__ << " registering osd." << s->osd_id << " session "
+ << s << " con " << con << dendl;
+ osd_cons[s->osd_id].insert(con);
+ }
}
return true;
return *authorizer != NULL;
}
+bool DaemonServer::ms_handle_reset(Connection *con)
+{
+ if (con->get_peer_type() == CEPH_ENTITY_TYPE_OSD) {
+ MgrSessionRef session(static_cast<MgrSession*>(con->get_priv()));
+ if (!session) {
+ return false;
+ }
+ session->put(); // SessionRef takes a ref
+ Mutex::Locker l(lock);
+ dout(10) << __func__ << " unregistering osd." << session->osd_id
+ << " session " << session << " con " << con << dendl;
+ osd_cons[session->osd_id].erase(con);
+ }
+ return false;
+}
+
bool DaemonServer::ms_handle_refused(Connection *con)
{
// do nothing for now
AuthAuthorizeHandlerRegistry auth_registry;
+ /// connections for osds
+ ceph::unordered_map<int,set<ConnectionRef>> osd_cons;
+
Mutex lock;
static void _generate_command_map(map<string,cmd_vartype>& cmdmap,
~DaemonServer() override;
bool ms_dispatch(Message *m) override;
- bool ms_handle_reset(Connection *con) override { return false; }
+ bool ms_handle_reset(Connection *con) override;
void ms_handle_remote_reset(Connection *con) override {}
bool ms_handle_refused(Connection *con) override;
bool ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer,
EntityName entity_name;
entity_inst_t inst;
+ int osd_id = -1; ///< osd id (if an osd)
+
// mon caps are suitably generic for mgr
MonCap caps;