]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: defer sending resolves until mdsmap.failed.empty()
authorSage Weil <sage.weil@dreamhost.com>
Fri, 28 Jan 2011 20:35:38 +0000 (12:35 -0800)
committerSage Weil <sage.weil@dreamhost.com>
Fri, 28 Jan 2011 20:35:38 +0000 (12:35 -0800)
There is no point sending resolves while there are still failed nodes,
since we can't complete.  We also trigger an assert if we try to send to
a failed node.  Instead just wait until failed.empty() and then start.

Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/mds/MDS.cc
src/mds/MDSMap.h

index efce6e6b61f42d52c938124884dd4cee9c1e42d0..0a1d2f7b0ea153dea7823da57de9a50272660a43 100644 (file)
@@ -958,7 +958,8 @@ void MDS::handle_mds_map(MMDSMap *m)
     if (oldresolve != resolve) {
       dout(10) << " resolve set is " << resolve << ", was " << oldresolve << dendl;
       calc_recovery_set();
-      mdcache->send_resolves();
+      if (!mdsmap->is_any_failed())
+       mdcache->send_resolves();
     }
   }
   
index bc1015f2712b2f584e534f01590f3f3ee7392657..7bcdd272bb093eaae5a53b2ade261fd28d3f5363 100644 (file)
@@ -410,6 +410,9 @@ public:
       get_num_mds(STATE_REJOIN) + 
       failed.size();
   }
+  bool is_any_failed() {
+    return failed.size();
+  }
   bool is_rejoining() {  
     // nodes are rejoining cache state
     return