]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: only propose new osdmap once at end of mdsmonitor tick()
authorSage Weil <sage@newdream.net>
Fri, 30 Jan 2009 19:13:23 +0000 (11:13 -0800)
committerSage Weil <sage@newdream.net>
Fri, 30 Jan 2009 19:13:41 +0000 (11:13 -0800)
src/mon/MDSMonitor.cc

index 0a0ab86102804bf70eca4817da3f973a2b9515a4..c640273dd814ee00dbc45041ca33ecc57c93e306 100644 (file)
@@ -538,6 +538,9 @@ void MDSMonitor::tick()
       last_beacon[p->second.addr] = g_clock.now();
 
   if (mon->osdmon()->paxos->is_writeable()) {
+
+    bool propose_osdmap = false;
+
     map<entity_addr_t, utime_t>::iterator p = last_beacon.begin();
     while (p != last_beacon.end()) {
       entity_addr_t addr = p->first;
@@ -593,7 +596,7 @@ void MDSMonitor::tick()
          utime_t until = now;
          until += g_conf.mds_blacklist_interval;
          mon->osdmon()->blacklist(addr, until);
-         mon->osdmon()->propose_pending();
+         propose_osdmap = true;
        }
        
        do_propose = true;
@@ -614,6 +617,10 @@ void MDSMonitor::tick()
       
       last_beacon.erase(addr);
     }
+
+    if (propose_osdmap)
+      mon->osdmon()->propose_pending();
+
   }