]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr: wait for ~3 beacons on startup if mons are pre-pacific
authorSage Weil <sage@newdream.net>
Fri, 12 Mar 2021 20:21:49 +0000 (15:21 -0500)
committerSage Weil <sage@newdream.net>
Fri, 12 Mar 2021 20:21:49 +0000 (15:21 -0500)
If we are going active and the mons are pre-pacific, they may have the
bug https://tracker.ceph.com/issues/49778 which prevents our modules
metadata (including options) from being updated (until the next beacon).
Wait a bit (6s by default, 3x the 2s mgr_tick_period) to let this
happen.

This allows us to upgrade from broken pre-pacific mons using cephadm,
which may (if orig cluster is <15.2.5) immediately do a cephadm
migration that relies on the mgr/cephadm/migration_current config
option being present in the mon's mgrmap.

Workaround for https://tracker.ceph.com/issues/49778

Signed-off-by: Sage Weil <sage@newdream.net>
src/mgr/Mgr.cc

index fb5f5253275064b5143ef47048842772c31a27b5..b8e1ec8e4aaad3c1cb2bf8deca0cd9923377d1a7 100644 (file)
@@ -237,6 +237,15 @@ void Mgr::init()
        mon_allows_kv_sub = true;
       }
     });
+  if (!mon_allows_kv_sub) {
+    // mons are still pre-pacific.  wait long enough to ensure our
+    // next beacon is processed so that our module options are
+    // propagated.  See https://tracker.ceph.com/issues/49778
+    lock.unlock();
+    dout(10) << "waiting a bit for the pre-pacific mon to process our beacon" << dendl;
+    sleep(g_conf().get_val<std::chrono::seconds>("mgr_tick_period").count() * 3);
+    lock.lock();
+  }
 
   // subscribe to all the maps
   monc->sub_want("log-info", 0, 0);