]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: do not tick() until all paxos instances recover
authorSage Weil <sage@inktank.com>
Wed, 3 Oct 2012 23:24:18 +0000 (16:24 -0700)
committerSage Weil <sage@inktank.com>
Wed, 3 Oct 2012 23:24:18 +0000 (16:24 -0700)
We cannot propose until they all recover.

Fixes: #3260
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
src/mon/AuthMonitor.cc
src/mon/LogMonitor.cc
src/mon/MDSMonitor.cc
src/mon/OSDMonitor.cc
src/mon/PGMonitor.cc

index a580a83c90a122cbade5afba366a46b64800f974..0c81c873f5bd48e49785f08a10f5eb6d36741ead 100644 (file)
@@ -67,7 +67,8 @@ void AuthMonitor::check_rotate()
 
 void AuthMonitor::tick() 
 {
-  if (!paxos->is_active()) return;
+  if (!paxos->is_active() ||
+      !mon->is_all_paxos_recovered()) return;
 
   update_from_paxos();
   dout(10) << *this << dendl;
index 41b15b4ab623f7316ed40d72cdea5743bddeed1a..84dda7dd6147954f75dbb51814cb1999cf8bdb9c 100644 (file)
@@ -68,7 +68,8 @@ ostream& operator<<(ostream& out, LogMonitor& pm)
 
 void LogMonitor::tick() 
 {
-  if (!paxos->is_active()) return;
+  if (!paxos->is_active() ||
+      !mon->is_all_paxos_recovered()) return;
 
   update_from_paxos();
   dout(10) << *this << dendl;
index f9530ec27083e83497e6d227ae998b6dca26fb0d..dd256b9b14a1de9f2a878829c0f97c4b116960dc 100644 (file)
@@ -995,7 +995,8 @@ void MDSMonitor::tick()
 {
   // make sure mds's are still alive
   // ...if i am an active leader
-  if (!paxos->is_active()) return;
+  if (!paxos->is_active() ||
+      !mon->is_all_paxos_recovered()) return;
 
   update_from_paxos();
   dout(10) << mdsmap << dendl;
@@ -1254,7 +1255,8 @@ void MDSMonitor::do_stop()
 {
   // hrm...
   if (!mon->is_leader() ||
-      !paxos->is_active()) {
+      !paxos->is_active() ||
+      !mon->is_all_paxos_recovered()) {
     dout(0) << "do_stop can't stop right now, mdsmap not writeable" << dendl;
     return;
   }
index 223c5aa04c917db8277f8a36a4edb957a72969e1..a0e098643bc5ad04f0482c170f4dad33303b40b3 100644 (file)
@@ -1369,7 +1369,8 @@ void OSDMonitor::check_sub(Subscription *sub)
 
 void OSDMonitor::tick()
 {
-  if (!paxos->is_active()) return;
+  if (!paxos->is_active() ||
+      !mon->is_all_paxos_recovered()) return;
 
   update_from_paxos();
   dout(10) << osdmap << dendl;
index c30760a8404e432186a7cf4d83e574731ae3405b..8564634543d2fd6fbbc0f047e6932fb38a305b7d 100644 (file)
@@ -116,7 +116,8 @@ void PGMonitor::update_logger()
 
 void PGMonitor::tick() 
 {
-  if (!paxos->is_active()) return;
+  if (!paxos->is_active() ||
+      !mon->is_all_paxos_recovered()) return;
 
   update_from_paxos();
   handle_osd_timeouts();