diff --git a/sdk/src/logs/multi_log_record_processor.cc b/sdk/src/logs/multi_log_record_processor.cc index c16dc0b469..8fdbf08328 100644 --- a/sdk/src/logs/multi_log_record_processor.cc +++ b/sdk/src/logs/multi_log_record_processor.cc @@ -75,39 +75,34 @@ void MultiLogRecordProcessor::OnEmit(std::unique_ptr &&record) noexc bool MultiLogRecordProcessor::ForceFlush(std::chrono::microseconds timeout) noexcept { - // Convert to nanos to prevent overflow - std::chrono::nanoseconds timeout_ns = std::chrono::nanoseconds::max(); - if (std::chrono::duration_cast(timeout_ns) > timeout) - { - timeout_ns = std::chrono::duration_cast(timeout); - } bool result = true; auto start_time = std::chrono::system_clock::now(); auto overflow_checker = std::chrono::system_clock::time_point::max(); std::chrono::system_clock::time_point expire_time; - if (overflow_checker - start_time <= timeout_ns) + if (std::chrono::duration_cast(overflow_checker - start_time) <= + timeout) { expire_time = overflow_checker; } else { expire_time = - start_time + std::chrono::duration_cast(timeout_ns); + start_time + std::chrono::duration_cast(timeout); } for (auto &processor : processors_) { - if (!processor->ForceFlush(std::chrono::duration_cast(timeout_ns))) + if (!processor->ForceFlush(timeout)) { result = false; } start_time = std::chrono::system_clock::now(); if (expire_time > start_time) { - timeout_ns = std::chrono::duration_cast(expire_time - start_time); + timeout = std::chrono::duration_cast(expire_time - start_time); } else { - timeout_ns = std::chrono::nanoseconds::zero(); + timeout = std::chrono::microseconds::zero(); } } return result; @@ -115,37 +110,31 @@ bool MultiLogRecordProcessor::ForceFlush(std::chrono::microseconds timeout) noex bool MultiLogRecordProcessor::Shutdown(std::chrono::microseconds timeout) noexcept { - // Converto nanos to prevent overflow - std::chrono::nanoseconds timeout_ns = std::chrono::nanoseconds::max(); - if (std::chrono::duration_cast(timeout_ns) > timeout) - { - timeout_ns = std::chrono::duration_cast(timeout); - } bool result = true; auto start_time = std::chrono::system_clock::now(); auto overflow_checker = std::chrono::system_clock::time_point::max(); std::chrono::system_clock::time_point expire_time; - if (overflow_checker - start_time <= timeout_ns) + if (std::chrono::duration_cast(overflow_checker - start_time) <= + timeout) { expire_time = overflow_checker; } else { expire_time = - start_time + std::chrono::duration_cast(timeout_ns); + start_time + std::chrono::duration_cast(timeout); } for (auto &processor : processors_) { - result |= - processor->Shutdown(std::chrono::duration_cast(timeout_ns)); + result |= processor->Shutdown(timeout); start_time = std::chrono::system_clock::now(); if (expire_time > start_time) { - timeout_ns = std::chrono::duration_cast(expire_time - start_time); + timeout = std::chrono::duration_cast(expire_time - start_time); } else { - timeout_ns = std::chrono::nanoseconds::zero(); + timeout = std::chrono::microseconds::zero(); } } return result;