Skip to content

Commit 68b7b69

Browse files
authored
Set sampling decision maker for AI Guard (#10702)
Set sampling decision maker for AI Guard Merge branch 'master' into smola/ai-guard-dm Co-authored-by: santiago.mola <santiago.mola@datadoghq.com>
1 parent b0ab971 commit 68b7b69

File tree

5 files changed

+15
-4
lines changed

5 files changed

+15
-4
lines changed

dd-java-agent/agent-aiguard/src/main/java/com/datadog/aiguard/AIGuardInternal.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import com.squareup.moshi.Types;
1313
import datadog.communication.http.OkHttpUtils;
1414
import datadog.trace.api.Config;
15-
import datadog.trace.api.DDTags;
1615
import datadog.trace.api.aiguard.AIGuard;
1716
import datadog.trace.api.aiguard.AIGuard.AIGuardAbortError;
1817
import datadog.trace.api.aiguard.AIGuard.AIGuardClientError;
@@ -29,6 +28,7 @@
2928
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
3029
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
3130
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
31+
import datadog.trace.bootstrap.instrumentation.api.Tags;
3232
import java.io.IOException;
3333
import java.lang.annotation.Annotation;
3434
import java.lang.reflect.Type;
@@ -221,7 +221,7 @@ public Evaluation evaluate(final List<Message> messages, final Options options)
221221
final AgentSpan span = builder.start();
222222
final AgentSpan localRootSpan = span.getLocalRootSpan();
223223
if (localRootSpan != null) {
224-
localRootSpan.setTag(DDTags.MANUAL_KEEP, true);
224+
localRootSpan.setTag(Tags.AI_GUARD_KEEP, true);
225225
}
226226
try (final AgentScope scope = tracer.activateSpan(span)) {
227227
final Message last = messages.get(messages.size() - 1);

dd-java-agent/agent-aiguard/src/test/groovy/com/datadog/aiguard/AIGuardInternalTests.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategies
66
import com.squareup.moshi.Moshi
77
import datadog.common.version.VersionInfo
88
import datadog.trace.api.Config
9-
import datadog.trace.api.DDTags
109
import datadog.trace.api.aiguard.AIGuard
1110
import datadog.trace.api.telemetry.WafMetricCollector
1211
import datadog.trace.bootstrap.instrumentation.api.AgentSpan
1312
import datadog.trace.bootstrap.instrumentation.api.AgentTracer
13+
import datadog.trace.bootstrap.instrumentation.api.Tags
1414
import datadog.trace.test.util.DDSpecification
1515
import okhttp3.Call
1616
import okhttp3.HttpUrl
@@ -189,7 +189,7 @@ class AIGuardInternalTests extends DDSpecification {
189189

190190
then:
191191
1 * span.setTag(AIGuardInternal.TARGET_TAG, suite.target)
192-
1 * localRootSpan.setTag(DDTags.MANUAL_KEEP, true)
192+
1 * localRootSpan.setTag(Tags.AI_GUARD_KEEP, true)
193193
if (suite.target == 'tool') {
194194
1 * span.setTag(AIGuardInternal.TOOL_TAG, 'calc')
195195
}

dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ public boolean needsIntercept(String tag) {
110110
case DDTags.MANUAL_KEEP:
111111
case DDTags.MANUAL_DROP:
112112
case Tags.ASM_KEEP:
113+
case Tags.AI_GUARD_KEEP:
113114
case Tags.SAMPLING_PRIORITY:
114115
case Tags.PROPAGATED_TRACE_SOURCE:
115116
case Tags.PROPAGATED_DEBUG:
@@ -157,6 +158,12 @@ public boolean interceptTag(DDSpanContext span, String tag, Object value) {
157158
return true;
158159
}
159160
return false;
161+
case Tags.AI_GUARD_KEEP:
162+
if (asBoolean(value)) {
163+
span.forceKeep(SamplingMechanism.AI_GUARD);
164+
return true;
165+
}
166+
return false;
160167
case Tags.SAMPLING_PRIORITY:
161168
return interceptSamplingPriority(span, value);
162169
case Tags.PROPAGATED_TRACE_SOURCE:

internal-api/src/main/java/datadog/trace/api/sampling/SamplingMechanism.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public class SamplingMechanism {
3737

3838
public static final byte REMOTE_USER_RULE = 11;
3939
public static final byte REMOTE_ADAPTIVE_RULE = 12;
40+
public static final byte AI_GUARD = 13;
4041

4142
/** Force override sampling decision from external source, like W3C traceparent. */
4243
public static final byte EXTERNAL_OVERRIDE = Byte.MIN_VALUE;

internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/Tags.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ public class Tags {
168168
/** ASM force tracer to keep the trace */
169169
public static final String ASM_KEEP = "asm.keep";
170170

171+
/** AI Guard force tracer to keep the trace */
172+
public static final String AI_GUARD_KEEP = "ai_guard.keep";
173+
171174
public static final String PROPAGATED_TRACE_SOURCE = "_dd.p.ts";
172175
public static final String PROPAGATED_DEBUG = "_dd.p.debug";
173176

0 commit comments

Comments
 (0)