Skip to content

Commit f284153

Browse files
authored
Use constant instead of magic values for IsTraceRoot (#9465)
* chore: Use constant instead of magic values for IsTraceRoot * fix: PR Review * chore: Extract tristate as an enum --------- Signed-off-by: Brice Dutheil <[email protected]>
1 parent cb81aca commit f284153

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

dd-trace-core/src/main/java/datadog/trace/common/metrics/SerializingMetricWriter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ public final class SerializingMetricWriter implements MetricWriter {
3636
private static final byte[] SPAN_KIND = "SpanKind".getBytes(ISO_8859_1);
3737
private static final byte[] PEER_TAGS = "PeerTags".getBytes(ISO_8859_1);
3838

39+
// Constant declared here for compile-time folding
40+
public static final int TRISTATE_TRUE = TriState.TRUE.serialValue;
41+
public static final int TRISTATE_FALSE = TriState.FALSE.serialValue;
42+
3943
private final WellKnownTags wellKnownTags;
4044
private final WritableFormatter writer;
4145
private final Sink sink;
@@ -118,7 +122,7 @@ public void add(MetricKey key, AggregateMetric aggregate) {
118122
writer.writeBoolean(key.isSynthetics());
119123

120124
writer.writeUTF8(IS_TRACE_ROOT);
121-
writer.writeInt(key.isTraceRoot() ? 1 : 2); // tristate (0 unknown, 1 true, 2 false)
125+
writer.writeInt(key.isTraceRoot() ? TRISTATE_TRUE : TRISTATE_FALSE);
122126

123127
writer.writeUTF8(SPAN_KIND);
124128
writer.writeUTF8(key.getSpanKind());
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package datadog.trace.common.metrics;
2+
3+
/**
4+
* TriState is used to represent a three-valued logic: true, false, and unknown. The "integer"
5+
* values are used for metrics serialization.
6+
*/
7+
public enum TriState {
8+
UNKNOWN(0),
9+
TRUE(1),
10+
FALSE(2);
11+
public final int serialValue;
12+
13+
TriState(int serialValue) {
14+
this.serialValue = serialValue;
15+
}
16+
}

dd-trace-core/src/test/groovy/datadog/trace/common/metrics/SerializingMetricWriterTest.groovy

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS
1717
import static java.util.concurrent.TimeUnit.SECONDS
1818

1919
class SerializingMetricWriterTest extends DDSpecification {
20-
2120
def "should produce correct message #iterationIndex with process tags enabled #withProcessTags" () {
2221
setup:
2322
if (withProcessTags) {
@@ -177,7 +176,7 @@ class SerializingMetricWriterTest extends DDSpecification {
177176
assert unpacker.unpackBoolean() == key.isSynthetics()
178177
++elementCount
179178
assert unpacker.unpackString() == "IsTraceRoot"
180-
assert unpacker.unpackInt() == (key.isTraceRoot() ? 1 : 2)
179+
assert unpacker.unpackInt() == (key.isTraceRoot() ? TriState.TRUE.serialValue : TriState.FALSE.serialValue)
181180
++elementCount
182181
assert unpacker.unpackString() == "SpanKind"
183182
assert unpacker.unpackString() == key.getSpanKind() as String

0 commit comments

Comments
 (0)