diff --git a/agents/src/span_collector.cc b/agents/src/span_collector.cc index 3e429c65f8..8aafe53dee 100644 --- a/agents/src/span_collector.cc +++ b/agents/src/span_collector.cc @@ -34,7 +34,12 @@ void SpanCollector::do_collect() { // Only notify the loop_ thread if the queue reaches min_span_count_to // avoid too many uv_async_t::send() calls. if (collector->span_msg_q_.enqueue(span) > collector->min_span_count_) { - ASSERT_EQ(0, collector->span_msg_->send()); + if (!collector->sent_) { + ASSERT_EQ(0, collector->span_msg_->send()); + collector->sent_ = true; + } + } else if (collector->sent_) { + collector->sent_ = false; } }, weak_from_this()); diff --git a/agents/src/span_collector.h b/agents/src/span_collector.h index 71e23197bd..3e666889db 100644 --- a/agents/src/span_collector.h +++ b/agents/src/span_collector.h @@ -83,6 +83,7 @@ class SpanCollector: public std::enable_shared_from_this { nsuv::ns_timer* span_timer_; std::function callback_ = nullptr; std::function transform_callback_ = nullptr; + bool sent_ = false; }; } // namespace nsolid