continue; // no change
if (newstate == MDSMap::STATE_RECONNECT &&
- mds_sessions.count(p->first))
- send_reconnect(p->first);
+ mds_sessions.count(p->first)) {
+ MetaSession *session = mds_sessions[p->first];
+ session->inst = mdsmap->get_inst(p->first);
+ send_reconnect(session);
+ }
if (newstate >= MDSMap::STATE_ACTIVE) {
if (oldstate < MDSMap::STATE_ACTIVE) {
monclient->sub_got("mdsmap", mdsmap->get_epoch());
}
-void Client::send_reconnect(int mds)
+void Client::send_reconnect(MetaSession *session)
{
+ int mds = session->mds_num;
ldout(cct, 10) << "send_reconnect to mds." << mds << dendl;
MClientReconnect *m = new MClientReconnect;
- assert(mds_sessions.count(mds));
-
// i have an open session.
hash_set<inodeno_t> did_snaprealm;
for (hash_map<vinodeno_t, Inode*>::iterator p = inode_map.begin();
}
// reset my cap seq number
- mds_sessions[mds]->seq = 0;
+ session->seq = 0;
//connect to the mds' offload targets
connect_mds_targets(mds);
//make sure unsafe requests get saved
- resend_unsafe_requests(mds);
+ resend_unsafe_requests(session);
- messenger->send_message(m, mdsmap->get_inst(mds));
+ messenger->send_message(m, session->inst);
}
}
}
-void Client::resend_unsafe_requests(int mds_num)
+void Client::resend_unsafe_requests(MetaSession *session)
{
- MetaSession *session = mds_sessions[mds_num];
for (xlist<MetaRequest*>::iterator iter = session->unsafe_requests.begin();
!iter.end();
++iter)
void _close_mds_session(MetaSession *s);
void _closed_mds_session(MetaSession *s);
void handle_client_session(MClientSession *m);
- void send_reconnect(int mds);
- void resend_unsafe_requests(int mds);
+ void send_reconnect(MetaSession *s);
+ void resend_unsafe_requests(MetaSession *s);
// mds requests
tid_t last_tid, last_flush_seq;