diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/src/vespa/config/frt/frtconnection.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/config/src/vespa/config/frt/frtconnection.cpp b/config/src/vespa/config/frt/frtconnection.cpp index 93a5867b180..6eb71eb18f0 100644 --- a/config/src/vespa/config/frt/frtconnection.cpp +++ b/config/src/vespa/config/frt/frtconnection.cpp @@ -79,7 +79,7 @@ void FRTConnection::setSuccess() { _transientFailures = 0; _fatalFailures = 0; - _suspendedUntil = system_time(duration::zero()); + _suspendedUntil = system_time(); } void FRTConnection::calculateSuspension(ErrorType type) @@ -103,7 +103,13 @@ void FRTConnection::calculateSuspension(ErrorType type) break; } system_time now = system_clock::now(); - _suspendedUntil = now + delay; + /* + * On Darwin, the std::chrono::steady_clock period (std::nano) is + * not exactly divisible by the std::chrono::system_clock period + * (std::micro). Thus we need to use std::chrono::duration_cast to + * convert from steady_time::duration to system_time::duration. + */ + _suspendedUntil = now + std::chrono::duration_cast<system_time::duration>(delay); if (_suspendWarned < (now - 5s)) { LOG(warning, "FRT Connection %s suspended until %s", _address.c_str(), vespalib::to_string(_suspendedUntil).c_str()); _suspendWarned = now; |