Session *session;
if (open) {
session = mds->sessionmap.get_or_add_session(client_inst);
- if (session->is_closed())
- mds->sessionmap.set_state(session, Session::STATE_OPEN);
+ mds->sessionmap.set_state(session, Session::STATE_OPEN);
+ dout(10) << " opened session " << session->inst << dendl;
} else {
session = mds->sessionmap.get_session(client_inst.name);
- if (session->is_closed())
+ if (session->connection == NULL) {
mds->sessionmap.remove_session(session);
- else
+ dout(10) << " removed session " << session->inst << dendl;
+ } else {
session->clear(); // the client has reconnected; keep the Session, but reset
+ dout(10) << " reset session " << session->inst << " (they reconnected)" << dendl;
+ }
}
- dout(10) << "session " << session << " state " << session->get_state() << dendl;
}
-
+
if (inos.size() && inotablev) {
if (mds->inotable->get_version() >= inotablev) {
dout(10) << "ESession.replay inotable " << mds->inotable->get_version()