File tree Expand file tree Collapse file tree 2 files changed +29
-3
lines changed
Expand file tree Collapse file tree 2 files changed +29
-3
lines changed Original file line number Diff line number Diff line change @@ -215,15 +215,25 @@ void DatadogAgent::flush() {
215215 logger = logger_](int response_status,
216216 const DictReader& /* response_headers*/ ,
217217 std::string response_body) {
218- if (response_status < 200 || response_status >= 300 ) {
218+ if (response_status != 200 ) {
219219 logger->log_error ([&](auto & stream) {
220220 stream << " Unexpected response status " << response_status
221- << " with body (starts on next line):\n "
221+ << " in Datadog Agent response with body of length "
222+ << response_body.size () << " (starts on next line):\n "
222223 << response_body;
223224 });
224225 return ;
225226 }
226227
228+ if (response_body.empty ()) {
229+ logger->log_error ([](auto & stream) {
230+ stream
231+ << " Datadog Agent returned response without a body."
232+ " This tracer might be sending batches of traces too frequently" ;
233+ });
234+ return ;
235+ }
236+
227237 auto result = parse_agent_traces_response (response_body);
228238 if (const auto * error_message = std::get_if<std::string>(&result)) {
229239 logger->log_error (*error_message);
Original file line number Diff line number Diff line change @@ -66,6 +66,21 @@ TEST_CASE("CollectorResponse") {
6666 REQUIRE (logger->error_count () == 0 );
6767 }
6868
69+ SECTION (" HTTP success with empty body" ) {
70+ // Don't echo error messages.
71+ logger->echo = nullptr ;
72+
73+ {
74+ http_client->response_status = 200 ;
75+ Tracer tracer{*finalized};
76+ auto span = tracer.create_span ();
77+ (void )span;
78+ }
79+
80+ REQUIRE (event_scheduler->cancelled );
81+ REQUIRE (logger->error_count () == 1 );
82+ }
83+
6984 SECTION (" invalid responses" ) {
7085 // Don't echo error messages.
7186 logger->echo = nullptr ;
@@ -101,7 +116,8 @@ TEST_CASE("CollectorResponse") {
101116 // Don't echo error messages.
102117 logger->echo = nullptr ;
103118
104- auto status = GENERATE (range (300 , 600 ));
119+ // Datadog Agent only returns 200 on success.
120+ auto status = GENERATE (range (201 , 600 ));
105121 {
106122 http_client->response_status = status;
107123 Tracer tracer{*finalized};
You can’t perform that action at this time.
0 commit comments