]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: wait for ~3 beacons on startup if mons are pre-pacific 40132/head
authorSage Weil <sage@newdream.net>
Fri, 12 Mar 2021 20:21:49 +0000 (15:21 -0500)
committerSage Weil <sage@newdream.net>
Mon, 15 Mar 2021 20:12:52 +0000 (15:12 -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>
(cherry picked from commit b356fd0a8c65b4f6dad9e51286df380e6974f842)

src/mgr/Mgr.cc

index 91e5ed482698d8a9bf56df4105b94c069e7b016c..312464a4a3b7fb875922def9e2d49a05bf34197b 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);