From: Ilya Dryomov Date: Thu, 1 Apr 2021 08:07:00 +0000 (+0200) Subject: mon/MonClient: resurrect "waiting for monmap|config" timeouts X-Git-Tag: v16.2.1~21 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=da55a3bcd22c1830890769a6b042297e524b4d35;p=ceph.git mon/MonClient: resurrect "waiting for monmap|config" timeouts 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 (cherry picked from commit 6faa18e0a8e8efba6bd2978942eb9909b6568d5c) --- diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index cc6a67ae604..982a79887b9 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -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) {