Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ private static class State {
String metricsEndpoint;
String dataStreamsEndpoint;
boolean supportsLongRunning;
boolean supportsDropping;
boolean supportsClientSideStats;
boolean supportsDropping;
String state;
String configEndpoint;
String debuggerLogEndpoint;
Expand Down Expand Up @@ -166,7 +166,7 @@ private void doDiscovery(State newState) {
errorQueryingEndpoint("info", error);
}
if (fallback) {
newState.supportsDropping = false;
newState.supportsClientSideStats = false;
newState.supportsLongRunning = false;
log.debug("Falling back to probing, client dropping will be disabled");
// disable metrics unless the info endpoint is present, which prevents
Expand Down Expand Up @@ -307,13 +307,15 @@ private boolean processInfoResponse(State newState, String response) {
Boolean.TRUE.equals(map.getOrDefault("long_running_spans", false));

if (metricsEnabled) {
newState.supportsClientSideStats = !AgentVersion.isVersionBelow(newState.version, 7, 65, 0);
Object canDrop = map.get("client_drop_p0s");
newState.supportsDropping =
null != canDrop
&& ("true".equalsIgnoreCase(String.valueOf(canDrop))
|| Boolean.TRUE.equals(canDrop));

newState.supportsClientSideStats =
newState.supportsDropping && !AgentVersion.isVersionBelow(newState.version, 7, 65, 0);

Object peer_tags = map.get("peer_tags");
newState.peerTags =
peer_tags instanceof List
Expand Down Expand Up @@ -360,7 +362,6 @@ private static void discoverStatsDPort(final Map<String, Object> info) {
public boolean supportsMetrics() {
return metricsEnabled
&& null != discoveryState.metricsEndpoint
&& discoveryState.supportsDropping
&& discoveryState.supportsClientSideStats;
}

Expand All @@ -380,10 +381,6 @@ public boolean supportsDebuggerDiagnostics() {
return discoveryState.debuggerDiagnosticsEndpoint != null;
}

public boolean supportsDropping() {
return discoveryState.supportsDropping;
}

public boolean supportsLongRunning() {
return discoveryState.supportsLongRunning;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
features.getMetricsEndpoint() == V6_METRICS_ENDPOINT
!features.supportsMetrics()
features.getTraceEndpoint() == "v0.5/traces"
!features.supportsDropping()
features.getDataStreamsEndpoint() == V01_DATASTREAMS_ENDPOINT
features.supportsDataStreams()
features.state() == INFO_STATE
Expand Down Expand Up @@ -118,7 +117,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
features.getMetricsEndpoint() == V6_METRICS_ENDPOINT
!features.supportsMetrics()
features.getTraceEndpoint() == "v0.5/traces"
!features.supportsDropping()
features.getDataStreamsEndpoint() == V01_DATASTREAMS_ENDPOINT
features.supportsDataStreams()
features.state() == INFO_STATE
Expand All @@ -145,7 +143,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
features.getMetricsEndpoint() == V6_METRICS_ENDPOINT
features.supportsMetrics()
features.getTraceEndpoint() == "v0.5/traces"
features.supportsDropping()
features.state() == INFO_WITH_CLIENT_DROPPING_STATE
0 * _
}
Expand Down Expand Up @@ -201,7 +198,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
features.getMetricsEndpoint() == null
!features.supportsMetrics()
features.getTraceEndpoint() == "v0.5/traces"
!features.supportsDropping()
!features.supportsLongRunning()
features.state() == PROBE_STATE
0 * _
Expand All @@ -222,7 +218,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
features.getMetricsEndpoint() == null
!features.supportsMetrics()
features.getTraceEndpoint() == "v0.5/traces"
!features.supportsDropping()
!features.supportsLongRunning()
features.state() == PROBE_STATE
0 * _
Expand All @@ -245,7 +240,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
features.getMetricsEndpoint() == null
!features.supportsMetrics()
features.getTraceEndpoint() == "v0.4/traces"
!features.supportsDropping()
features.state() == PROBE_STATE
0 * _
}
Expand All @@ -267,7 +261,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
features.getMetricsEndpoint() == null
!features.supportsMetrics()
features.getTraceEndpoint() == "v0.4/traces"
!features.supportsDropping()
features.state() == PROBE_STATE
0 * _
}
Expand All @@ -290,7 +283,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
!features.supportsMetrics()
features.getTraceEndpoint() == "v0.3/traces"
!features.supportsLongRunning()
!features.supportsDropping()
features.state() == PROBE_STATE
0 * _
}
Expand All @@ -308,7 +300,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/v0.5/traces" }) >> { Request request -> success(request) }
0 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/v0.6/stats" })
!features.supportsMetrics()
!features.supportsDropping()
!(features as DroppingPolicy).active()
features.state() == PROBE_STATE

Expand All @@ -318,7 +309,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
then: "metrics and dropping not supported"
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/info" }) >> { Request request -> infoResponse(request, INFO_WITH_CLIENT_DROPPING_RESPONSE) }
!features.supportsMetrics()
!features.supportsDropping()
!(features as DroppingPolicy).active()
features.state() == INFO_WITH_CLIENT_DROPPING_STATE

Expand All @@ -328,7 +318,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
then: "metrics and dropping not supported"
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/info" }) >> { Request request -> infoResponse(request, INFO_RESPONSE) }
!features.supportsMetrics()
!features.supportsDropping()
!(features as DroppingPolicy).active()
features.state() == INFO_STATE
0 * _
Expand All @@ -346,7 +335,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/info" }) >> { Request request -> notFound(request) }
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/v0.4/traces" }) >> { Request request -> success(request) }
0 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/v0.6/stats" })
!features.supportsDropping()
!features.supportsMetrics()
!(features as DroppingPolicy).active()
features.state() == PROBE_STATE
Expand All @@ -357,7 +345,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
then: "metrics endpoint not probed, metrics and dropping enabled"
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/info" }) >> { Request request -> infoResponse(request, INFO_WITH_CLIENT_DROPPING_RESPONSE) }
0 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/v0.4/traces" }) >> { Request request -> success(request) }
features.supportsDropping()
features.supportsMetrics()
(features as DroppingPolicy).active()
features.state() == INFO_WITH_CLIENT_DROPPING_STATE
Expand All @@ -376,7 +363,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/info" }) >> { Request request -> infoResponse(request, INFO_WITH_CLIENT_DROPPING_RESPONSE) }
0 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/v0.4/traces" }) >> { Request request -> success(request) }
0 * client.newCall(_)
features.supportsDropping()
features.supportsMetrics()
(features as DroppingPolicy).active()
features.state() == INFO_WITH_CLIENT_DROPPING_STATE
Expand All @@ -388,7 +374,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/info" }) >> { Request request -> notFound(request) }
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/v0.4/traces" }) >> { Request request -> success(request) }
0 * client.newCall(_)
!features.supportsDropping()
!features.supportsMetrics()
!(features as DroppingPolicy).active()
features.state() == PROBE_STATE
Expand All @@ -407,7 +392,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/info" }) >> { Request request -> infoResponse(request, INFO_WITH_CLIENT_DROPPING_RESPONSE) }
0 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/v0.4/traces" }) >> { Request request -> success(request) }
0 * client.newCall(_)
features.supportsDropping()
features.supportsMetrics()
(features as DroppingPolicy).active()
features.state() == INFO_WITH_CLIENT_DROPPING_STATE
Expand All @@ -418,8 +402,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
then: "metrics and dropping not supported"
1 * client.newCall({ Request request -> request.url().toString() == "http://localhost:8125/info" }) >> { Request request -> infoResponse(request, INFO_WITHOUT_METRICS_RESPONSE) }
0 * client.newCall(_)
// misconfigured agent allows dropping but not metrics
features.supportsDropping()
!features.supportsMetrics()
// but we don't permit dropping anyway
!(features as DroppingPolicy).active()
Expand Down Expand Up @@ -481,7 +463,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
then:
1 * client.newCall(_) >> { Request request -> infoResponse(request, INFO_WITH_PEER_TAG_BACK_PROPAGATION_RESPONSE) }
features.state() == INFO_WITH_PEER_TAG_BACK_PROPAGATION_STATE
features.supportsDropping()
features.peerTags().containsAll(
"_dd.base_service",
"active_record.db.vendor",
Expand Down Expand Up @@ -519,7 +500,6 @@ class DDAgentFeaturesDiscoveryTest extends DDSpecification {
infoResponse(request, response)
}
features.getMetricsEndpoint() == V6_METRICS_ENDPOINT
features.supportsDropping() == true
features.supportsMetrics() == expected

where:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,7 @@ public boolean publish(List<? extends CoreSpan<?>> trace) {
forceKeep |= publish(span, isTopLevel, spanKind);
}
}
healthMetrics.onClientStatTraceComputed(
counted, trace.size(), features.supportsDropping() && !forceKeep);
healthMetrics.onClientStatTraceComputed(counted, trace.size(), !forceKeep);
}
return forceKeep;
}
Expand Down