1
1
package datadog .communication .ddagent ;
2
2
3
+ import static datadog .communication .serialization .msgpack .MsgPackWriter .FIXARRAY ;
4
+ import static java .util .Collections .singletonList ;
5
+
3
6
import com .squareup .moshi .JsonAdapter ;
4
7
import com .squareup .moshi .Moshi ;
5
8
import com .squareup .moshi .Types ;
11
14
import datadog .trace .util .Strings ;
12
15
import java .nio .ByteBuffer ;
13
16
import java .security .NoSuchAlgorithmException ;
14
- import java .util .Collections ;
15
17
import java .util .HashSet ;
16
18
import java .util .List ;
17
19
import java .util .Map ;
@@ -32,6 +34,12 @@ public class DDAgentFeaturesDiscovery implements DroppingPolicy {
32
34
.build ()
33
35
.adapter (Types .newParameterizedType (Map .class , String .class , Object .class ));
34
36
37
+ // Currently all the endpoints that we probe expect a msgpack body of an array of arrays, v3/v4
38
+ // arbitrary size and v5 two elements, so let's give them a two element array of empty arrays
39
+ private static final byte [] PROBE_MESSAGE = {
40
+ (byte ) FIXARRAY | 2 , (byte ) FIXARRAY , (byte ) FIXARRAY
41
+ };
42
+
35
43
public static final String V3_ENDPOINT = "v0.3/traces" ;
36
44
public static final String V4_ENDPOINT = "v0.4/traces" ;
37
45
public static final String V5_ENDPOINT = "v0.5/traces" ;
@@ -191,7 +199,9 @@ private String probeTracesEndpoint(String[] endpoints) {
191
199
client
192
200
.newCall (
193
201
new Request .Builder ()
194
- .put (OkHttpUtils .msgpackRequestBodyOf (Collections .<ByteBuffer >emptyList ()))
202
+ .put (
203
+ OkHttpUtils .msgpackRequestBodyOf (
204
+ singletonList (ByteBuffer .wrap (PROBE_MESSAGE ))))
195
205
.url (agentBaseUrl .resolve (candidate ))
196
206
.build ())
197
207
.execute ()) {
0 commit comments