]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: handle client reconnect gather race 21163/head
authorYan, Zheng <zyan@redhat.com>
Tue, 28 Nov 2017 09:06:47 +0000 (17:06 +0800)
committerNathan Cutler <ncutler@suse.com>
Mon, 2 Apr 2018 06:59:13 +0000 (08:59 +0200)
Fixes: http://tracker.ceph.com/issues/22263
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
(cherry picked from commit e4ecf26a8ef622f8290129a682afb1c64b3e7e00)

Conflicts:
    src/mds/Server.cc: need to remove 'reconnect_evicting', otherwise compilation fails

src/mds/Server.cc

index 236227a5f5529edb9483a82d153a325c3edfdb07..18c8387bdaa65fb2e9ac37535b6b2e631a1efc2d 100644 (file)
@@ -740,7 +740,7 @@ void Server::handle_client_reconnect(MClientReconnect *m)
   dout(10) << " reconnect_start " << reconnect_start << " delay " << delay << dendl;
 
   bool deny = false;
-  if (!mds->is_reconnect()) {
+  if (!mds->is_reconnect() || mds->get_want_state() != CEPH_MDS_STATE_RECONNECT) {
     // XXX maybe in the future we can do better than this?
     dout(1) << " no longer in reconnect state, ignoring reconnect, sending close" << dendl;
     mds->clog->info() << "denied reconnect attempt (mds is "