]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: update peer failure response to account for damaged
authorJohn Spray <john.spray@redhat.com>
Thu, 26 Mar 2015 12:52:36 +0000 (12:52 +0000)
committerJohn Spray <john.spray@redhat.com>
Thu, 26 Mar 2015 13:11:44 +0000 (13:11 +0000)
...by calling get_down_mds_set instead of get_failed_mds_set.

Also remove a redundant if(true) around this region.

Signed-off-by: John Spray <john.spray@redhat.com>
src/mds/MDS.cc

index 8da5d1e294fde4999a8a7c2326d8a79f072f91c6..10308e668a97a37eb22aa1d66a739290f603f509 100644 (file)
@@ -1764,28 +1764,33 @@ void MDS::handle_mds_map(MMDSMap *m)
   }
 
   // did someone fail?
-  if (true) {
-    // new failed?
-    set<mds_rank_t> oldfailed, failed;
-    oldmap->get_failed_mds_set(oldfailed);
-    mdsmap->get_failed_mds_set(failed);
-    for (set<mds_rank_t>::iterator p = failed.begin(); p != failed.end(); ++p)
-      if (oldfailed.count(*p) == 0) {
-       messenger->mark_down(oldmap->get_inst(*p).addr);
-       handle_mds_failure(*p);
+  //   new down?
+  {
+    set<mds_rank_t> olddown, down;
+    oldmap->get_down_mds_set(&olddown);
+    mdsmap->get_down_mds_set(&down);
+    for (set<mds_rank_t>::iterator p = down.begin(); p != down.end(); ++p) {
+      if (olddown.count(*p) == 0) {
+        messenger->mark_down(oldmap->get_inst(*p).addr);
+        handle_mds_failure(*p);
       }
-    
-    // or down then up?
-    //  did their addr/inst change?
+    }
+  }
+
+  // did someone fail?
+  //   did their addr/inst change?
+  {
     set<mds_rank_t> up;
     mdsmap->get_up_mds_set(up);
-    for (set<mds_rank_t>::iterator p = up.begin(); p != up.end(); ++p) 
+    for (set<mds_rank_t>::iterator p = up.begin(); p != up.end(); ++p) {
       if (oldmap->have_inst(*p) &&
-         oldmap->get_inst(*p) != mdsmap->get_inst(*p)) {
-       messenger->mark_down(oldmap->get_inst(*p).addr);
-       handle_mds_failure(*p);
+         oldmap->get_inst(*p) != mdsmap->get_inst(*p)) {
+        messenger->mark_down(oldmap->get_inst(*p).addr);
+        handle_mds_failure(*p);
       }
+    }
   }
+
   if (is_clientreplay() || is_active() || is_stopping()) {
     // did anyone stop?
     set<mds_rank_t> oldstopped, stopped;