From 08abc31359345751432701de36b00d207d3fb6f6 Mon Sep 17 00:00:00 2001 From: dradjenovic Date: Tue, 25 Oct 2022 20:47:10 +0000 Subject: [PATCH] mon: add exception handling to ceph health mute Signed-off-by: Daniel Radjenovic --- src/mon/HealthMonitor.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mon/HealthMonitor.cc b/src/mon/HealthMonitor.cc index 3adbdc3de59f9..6eed2b0f05bc3 100644 --- a/src/mon/HealthMonitor.cc +++ b/src/mon/HealthMonitor.cc @@ -300,13 +300,19 @@ bool HealthMonitor::prepare_command(MonOpRequestRef op) cmd_getval(cmdmap, "sticky", sticky); string ttl_str; utime_t ttl; + std::chrono::seconds secs; if (cmd_getval(cmdmap, "ttl", ttl_str)) { - auto secs = parse_timespan(ttl_str); - if (secs == 0s) { - r = -EINVAL; - ss << "not a valid duration: " << ttl_str; - goto out; + try { + secs = parse_timespan(ttl_str); + if (secs == 0s) { + throw std::invalid_argument("timespan = 0"); + } + } catch (const std::invalid_argument& e) { + ss << "invalid duration: " << ttl_str << " (" << e.what() << ")"; + r = -EINVAL; + goto out; } + ttl = ceph_clock_now(); ttl += std::chrono::duration(secs).count(); } -- 2.39.5