Skip to content

Commit 6341a9b

Browse files
committed
Tag dsm checkpoints with product mask
1 parent 64347d6 commit 6341a9b

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.core.datastreams;
22

3+
import static datadog.trace.core.datastreams.TagsProcessor.PRODUCTS_MASK;
34
import static java.nio.charset.StandardCharsets.ISO_8859_1;
45
import static java.nio.charset.StandardCharsets.UTF_8;
56
import static java.util.concurrent.TimeUnit.MILLISECONDS;
@@ -52,6 +53,7 @@ public class DefaultPathwayContext implements PathwayContext {
5253
// direction != current direction
5354
private long closestOppositeDirectionHash;
5455
private String previousDirection;
56+
private String productMaskTag;
5557

5658
private static final Set<String> hashableTagKeys =
5759
new HashSet<String>(
@@ -117,6 +119,15 @@ public void setCheckpoint(
117119
setCheckpoint(sortedTags, pointConsumer, defaultTimestamp, 0);
118120
}
119121

122+
private String getProductMaskTag() {
123+
// it's fine to cache the value per context
124+
if (productMaskTag == null) {
125+
productMaskTag = PRODUCTS_MASK + ":" + Config.get().enabledProductsMask();
126+
}
127+
128+
return productMaskTag;
129+
}
130+
120131
@Override
121132
public void setCheckpoint(
122133
LinkedHashMap<String, String> sortedTags,
@@ -129,7 +140,9 @@ public void setCheckpoint(
129140
try {
130141
// So far, each tag key has only one tag value, so we're initializing the capacity to match
131142
// the number of tag keys for now. We should revisit this later if it's no longer the case.
132-
List<String> allTags = new ArrayList<>(sortedTags.size());
143+
List<String> allTags = new ArrayList<>(sortedTags.size() + 1);
144+
allTags.add(getProductMaskTag());
145+
133146
PathwayHashBuilder pathwayHashBuilder =
134147
new PathwayHashBuilder(hashOfKnownTags, serviceNameOverride);
135148
DataSetHashBuilder aggregationHashBuilder = new DataSetHashBuilder();

dd-trace-core/src/main/java/datadog/trace/core/datastreams/TagsProcessor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public String apply(String key) {
2121
}
2222

2323
public static final String MANUAL_TAG = "manual_checkpoint";
24+
public static final String PRODUCTS_MASK = "products_mask";
2425
public static final String TYPE_TAG = "type";
2526
private static final DDCache<String, String> TYPE_TAG_CACHE = DDCaches.newFixedSizeCache(32);
2627
private static final Function<String, String> TYPE_TAG_PREFIX = new StringPrefix("type:");

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3244,6 +3244,28 @@ public boolean isDataJobsEnabled() {
32443244
return dataJobsEnabled;
32453245
}
32463246

3247+
private static final int APM_PRODUCT = 1; // 00000001
3248+
private static final int DSM_PRODUCT = 2; // 00000010
3249+
private static final int DJM_PRODUCT = 4; // 00000100
3250+
private static final int PROFILING_PRODUCT = 8; // 00001000
3251+
3252+
// enabledProductsMask can be extended as needed
3253+
public long enabledProductsMask() {
3254+
long enabledProducts = APM_PRODUCT;
3255+
3256+
if (isDataStreamsEnabled()) {
3257+
enabledProducts |= DSM_PRODUCT;
3258+
}
3259+
if (isDataJobsEnabled()) {
3260+
enabledProducts |= DJM_PRODUCT;
3261+
}
3262+
if (isProfilingEnabled()) {
3263+
enabledProducts |= PROFILING_PRODUCT;
3264+
}
3265+
3266+
return enabledProducts;
3267+
}
3268+
32473269
public String getDataJobsCommandPattern() {
32483270
return dataJobsCommandPattern;
32493271
}

0 commit comments

Comments
 (0)