|
1 | 1 | package datadog.trace.common.metrics; |
2 | 2 |
|
3 | 3 | import datadog.metrics.api.Histogram; |
| 4 | +import datadog.trace.api.Config; |
4 | 5 | import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; |
5 | 6 | import datadog.trace.util.Hashtable; |
6 | 7 | import datadog.trace.util.LongHashingUtils; |
@@ -28,36 +29,33 @@ final class AggregateEntry extends Hashtable.Entry { |
28 | 29 |
|
29 | 30 | private static final UTF8BytesString[] EMPTY_TAGS = new UTF8BytesString[0]; |
30 | 31 |
|
31 | | - // Sentinel substitution is disabled until per-component config is wired in a follow-up PR. |
32 | | - // Tests that need sentinel mode should pass useBlockedSentinel=true explicitly. |
33 | | - static final boolean LIMITS_ENABLED = false; |
34 | | - |
35 | | - // Per-field cardinality handlers. Limits live on MetricCardinalityLimits -- see that class for |
36 | | - // per-field rationale. |
| 32 | + // Configurable per-field cardinality handlers — tunable via env var. |
37 | 33 | static final PropertyCardinalityHandler RESOURCE_HANDLER = |
38 | | - new PropertyCardinalityHandler("resource", MetricCardinalityLimits.RESOURCE, LIMITS_ENABLED); |
| 34 | + new PropertyCardinalityHandler( |
| 35 | + "resource", |
| 36 | + Config.get().getTraceStatsCardinalityLimit("resource", MetricCardinalityLimits.RESOURCE)); |
| 37 | + static final PropertyCardinalityHandler HTTP_ENDPOINT_HANDLER = |
| 38 | + new PropertyCardinalityHandler( |
| 39 | + "http_endpoint", |
| 40 | + Config.get() |
| 41 | + .getTraceStatsCardinalityLimit( |
| 42 | + "http_endpoint", MetricCardinalityLimits.HTTP_ENDPOINT)); |
| 43 | + |
| 44 | + // Fixed per-field cardinality handlers — hardcoded, not user-configurable. |
39 | 45 | static final PropertyCardinalityHandler SERVICE_HANDLER = |
40 | | - new PropertyCardinalityHandler("service", MetricCardinalityLimits.SERVICE, LIMITS_ENABLED); |
| 46 | + new PropertyCardinalityHandler("service", MetricCardinalityLimits.SERVICE); |
41 | 47 | static final PropertyCardinalityHandler OPERATION_HANDLER = |
42 | | - new PropertyCardinalityHandler( |
43 | | - "operation", MetricCardinalityLimits.OPERATION, LIMITS_ENABLED); |
| 48 | + new PropertyCardinalityHandler("operation", MetricCardinalityLimits.OPERATION); |
44 | 49 | static final PropertyCardinalityHandler SERVICE_SOURCE_HANDLER = |
45 | | - new PropertyCardinalityHandler( |
46 | | - "service_source", MetricCardinalityLimits.SERVICE_SOURCE, LIMITS_ENABLED); |
| 50 | + new PropertyCardinalityHandler("service_source", MetricCardinalityLimits.SERVICE_SOURCE); |
47 | 51 | static final PropertyCardinalityHandler TYPE_HANDLER = |
48 | | - new PropertyCardinalityHandler("type", MetricCardinalityLimits.TYPE, LIMITS_ENABLED); |
| 52 | + new PropertyCardinalityHandler("type", MetricCardinalityLimits.TYPE); |
49 | 53 | static final PropertyCardinalityHandler SPAN_KIND_HANDLER = |
50 | | - new PropertyCardinalityHandler( |
51 | | - "span_kind", MetricCardinalityLimits.SPAN_KIND, LIMITS_ENABLED); |
| 54 | + new PropertyCardinalityHandler("span_kind", MetricCardinalityLimits.SPAN_KIND); |
52 | 55 | static final PropertyCardinalityHandler HTTP_METHOD_HANDLER = |
53 | | - new PropertyCardinalityHandler( |
54 | | - "http_method", MetricCardinalityLimits.HTTP_METHOD, LIMITS_ENABLED); |
55 | | - static final PropertyCardinalityHandler HTTP_ENDPOINT_HANDLER = |
56 | | - new PropertyCardinalityHandler( |
57 | | - "http_endpoint", MetricCardinalityLimits.HTTP_ENDPOINT, LIMITS_ENABLED); |
| 56 | + new PropertyCardinalityHandler("http_method", MetricCardinalityLimits.HTTP_METHOD); |
58 | 57 | static final PropertyCardinalityHandler GRPC_STATUS_CODE_HANDLER = |
59 | | - new PropertyCardinalityHandler( |
60 | | - "grpc_status_code", MetricCardinalityLimits.GRPC_STATUS_CODE, LIMITS_ENABLED); |
| 58 | + new PropertyCardinalityHandler("grpc_status_code", MetricCardinalityLimits.GRPC_STATUS_CODE); |
61 | 59 |
|
62 | 60 | // Single authoritative list used by resetCardinalityHandlers(). populateFrom() and hashOf() keep |
63 | 61 | // named access for readability and to avoid per-span iteration overhead; this array ensures the |
|
0 commit comments