From: Sage Weil Date: Wed, 3 Oct 2012 23:24:18 +0000 (-0700) Subject: mon: do not tick() until all paxos instances recover X-Git-Tag: v0.53~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=36efcb5518ad9c7534c21668fa3df11b83c00a3f;p=ceph.git mon: do not tick() until all paxos instances recover We cannot propose until they all recover. Fixes: #3260 Signed-off-by: Sage Weil Reviewed-by: Joao Eduardo Luis --- diff --git a/src/mon/AuthMonitor.cc b/src/mon/AuthMonitor.cc index a580a83c90a1..0c81c873f5bd 100644 --- a/src/mon/AuthMonitor.cc +++ b/src/mon/AuthMonitor.cc @@ -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; diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index 41b15b4ab623..84dda7dd6147 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -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; diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index f9530ec27083..dd256b9b14a1 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -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; } diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 223c5aa04c91..a0e098643bc5 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -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; diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index c30760a8404e..8564634543d2 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -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();