@@ -243,17 +243,18 @@ Telemetry::Telemetry(Telemetry&& rhs)
243243 logger_ (std::move(rhs.logger_)),
244244 telemetry_endpoint_(std::move(rhs.telemetry_endpoint_)),
245245 tracer_signature_(std::move(rhs.tracer_signature_)),
246- http_client_(rhs.http_client_),
246+ http_client_(std::move( rhs.http_client_) ),
247247 clock_(std::move(rhs.clock_)),
248248 scheduler_(std::move(rhs.scheduler_)),
249+ shutting_down_(rhs.shutting_down_.load(std::memory_order_relaxed)),
249250 counters_(std::move(rhs.counters_)),
250251 counters_snapshot_(std::move(rhs.counters_snapshot_)),
251252 rates_(std::move(rhs.rates_)),
252253 rates_snapshot_(std::move(rhs.rates_snapshot_)),
253254 distributions_(std::move(rhs.distributions_)),
254255 seq_id_(rhs.seq_id_),
255- config_seq_ids_(rhs.config_seq_ids_),
256- host_info_(rhs.host_info_) {
256+ config_seq_ids_(std::move( rhs.config_seq_ids_) ),
257+ host_info_(std::move( rhs.host_info_) ) {
257258 cancel_tasks (rhs.tasks_ );
258259 schedule_tasks ();
259260}
@@ -738,13 +739,13 @@ void Telemetry::capture_metrics() {
738739
739740void Telemetry::log (std::string message, telemetry::LogLevel level,
740741 Optional<std::string> stacktrace) {
741- if (shutting_down_.load (std::memory_order_acquire)) {
742- return ;
743- }
744742 auto timestamp = std::chrono::duration_cast<std::chrono::seconds>(
745743 clock_ ().wall .time_since_epoch ())
746744 .count ();
747745 std::lock_guard l{log_mutex_};
746+ if (shutting_down_.load (std::memory_order_acquire)) {
747+ return ;
748+ }
748749 logs_.emplace_back (
749750 telemetry::LogMessage{std::move (message), level, stacktrace, timestamp});
750751}
@@ -755,10 +756,10 @@ void Telemetry::increment_counter(const Counter& id) {
755756
756757void Telemetry::increment_counter (const Counter& id,
757758 const std::vector<std::string>& tags) {
759+ std::lock_guard l{counter_mutex_};
758760 if (shutting_down_.load (std::memory_order_acquire)) {
759761 return ;
760762 }
761- std::lock_guard l{counter_mutex_};
762763 counters_[{id, tags}] += 1 ;
763764}
764765
@@ -768,10 +769,10 @@ void Telemetry::decrement_counter(const Counter& id) {
768769
769770void Telemetry::decrement_counter (const Counter& id,
770771 const std::vector<std::string>& tags) {
772+ std::lock_guard l{counter_mutex_};
771773 if (shutting_down_.load (std::memory_order_acquire)) {
772774 return ;
773775 }
774- std::lock_guard l{counter_mutex_};
775776 auto & v = counters_[{id, tags}];
776777 if (v > 0 ) v -= 1 ;
777778}
@@ -783,10 +784,10 @@ void Telemetry::set_counter(const Counter& id, uint64_t value) {
783784void Telemetry::set_counter (const Counter& id,
784785 const std::vector<std::string>& tags,
785786 uint64_t value) {
787+ std::lock_guard l{counter_mutex_};
786788 if (shutting_down_.load (std::memory_order_acquire)) {
787789 return ;
788790 }
789- std::lock_guard l{counter_mutex_};
790791 counters_[{id, tags}] = value;
791792}
792793
@@ -796,10 +797,10 @@ void Telemetry::set_rate(const Rate& id, uint64_t value) {
796797
797798void Telemetry::set_rate (const Rate& id, const std::vector<std::string>& tags,
798799 uint64_t value) {
800+ std::lock_guard l{rate_mutex_};
799801 if (shutting_down_.load (std::memory_order_acquire)) {
800802 return ;
801803 }
802- std::lock_guard l{rate_mutex_};
803804 rates_[{id, tags}] = value;
804805}
805806
@@ -810,10 +811,10 @@ void Telemetry::add_datapoint(const Distribution& id, uint64_t value) {
810811void Telemetry::add_datapoint (const Distribution& id,
811812 const std::vector<std::string>& tags,
812813 uint64_t value) {
814+ std::lock_guard l{distributions_mutex_};
813815 if (shutting_down_.load (std::memory_order_acquire)) {
814816 return ;
815817 }
816- std::lock_guard l{distributions_mutex_};
817818 distributions_[{id, tags}].emplace_back (value);
818819}
819820
0 commit comments