]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/MonClient: resurrect "waiting for monmap|config" timeouts
authorIlya Dryomov <idryomov@gmail.com>
Thu, 1 Apr 2021 08:07:00 +0000 (10:07 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 12 Apr 2021 18:50:53 +0000 (20:50 +0200)
This fixes a regression introduced in commit 85157d5aae3d ("mon:
s/Mutex/ceph::mutex/").  Waiting for monmap and config indefinitely
is not just bad UX, it actually masks other more serious bugs.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 6faa18e0a8e8efba6bd2978942eb9909b6568d5c)

src/mon/MonClient.cc

index cc6a67ae604e9c6df220806d344eebb60829b762..982a79887b91ccf8a77360109ea814435b0e673c 100644 (file)
@@ -175,8 +175,11 @@ int MonClient::get_monmap_and_config()
       }
       while ((!bootstrap_config || monmap.get_epoch() == 0) && r == 0) {
        ldout(cct,20) << __func__ << " waiting for monmap|config" << dendl;
-       map_cond.wait_for(l, ceph::make_timespan(
-          cct->_conf->mon_client_hunt_interval));
+       auto status = map_cond.wait_for(l, ceph::make_timespan(
+           cct->_conf->mon_client_hunt_interval));
+       if (status == std::cv_status::timeout) {
+         r = -ETIMEDOUT;
+       }
       }
 
       if (bootstrap_config) {