Skip to content

Commit 80a6938

Browse files
committed
Add a flag to disable BoundedTrie metrics in Beam
1 parent 5e031ab commit 80a6938

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

sdks/java/core/src/main/java/org/apache/beam/sdk/metrics/Metrics.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,13 @@ static class MetricsFlag {
6565
private static final AtomicReference<@Nullable MetricsFlag> INSTANCE = new AtomicReference<>();
6666
final boolean counterDisabled;
6767
final boolean stringSetDisabled;
68+
final boolean boundedTrieDisabled;
6869

69-
private MetricsFlag(boolean counterDisabled, boolean stringSetDisabled) {
70+
private MetricsFlag(
71+
boolean counterDisabled, boolean stringSetDisabled, boolean boundedTrieDisabled) {
7072
this.counterDisabled = counterDisabled;
7173
this.stringSetDisabled = stringSetDisabled;
74+
this.boundedTrieDisabled = boundedTrieDisabled;
7275
}
7376

7477
static boolean counterDisabled() {
@@ -80,6 +83,11 @@ static boolean stringSetDisabled() {
8083
MetricsFlag flag = INSTANCE.get();
8184
return flag != null && flag.stringSetDisabled;
8285
}
86+
87+
static boolean boundedTrieDisabled() {
88+
MetricsFlag flag = INSTANCE.get();
89+
return flag != null && flag.boundedTrieDisabled;
90+
}
8391
}
8492

8593
/**
@@ -101,7 +109,13 @@ public static void setDefaultPipelineOptions(PipelineOptions options) {
101109
if (stringSetDisabled) {
102110
LOG.info("StringSet metrics are disabled");
103111
}
104-
MetricsFlag.INSTANCE.compareAndSet(null, new MetricsFlag(counterDisabled, stringSetDisabled));
112+
boolean boundedTrieDisabled =
113+
ExperimentalOptions.hasExperiment(exp, "disableBoundedTrieMetrics");
114+
if (boundedTrieDisabled) {
115+
LOG.info("BoundedTrie metrics are disabled");
116+
}
117+
MetricsFlag.INSTANCE.compareAndSet(
118+
null, new MetricsFlag(counterDisabled, stringSetDisabled, boundedTrieDisabled));
105119
}
106120
}
107121

@@ -287,6 +301,9 @@ public MetricName getName() {
287301

288302
@Override
289303
public void add(Iterable<String> values) {
304+
if (MetricsFlag.boundedTrieDisabled()) {
305+
return;
306+
}
290307
MetricsContainer container = MetricsEnvironment.getCurrentContainer();
291308
if (container != null) {
292309
container.getBoundedTrie(name).add(values);

sdks/java/core/src/test/java/org/apache/beam/sdk/metrics/MetricsTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ public void testMetricsFlag() {
263263
Metrics.resetDefaultPipelineOptions();
264264
assertFalse(Metrics.MetricsFlag.counterDisabled());
265265
assertFalse(Metrics.MetricsFlag.stringSetDisabled());
266+
assertFalse(Metrics.MetricsFlag.boundedTrieDisabled());
266267
PipelineOptions options =
267268
PipelineOptionsFactory.fromArgs("--experiments=disableCounterMetrics").create();
268269
Metrics.setDefaultPipelineOptions(options);
@@ -274,6 +275,12 @@ public void testMetricsFlag() {
274275
assertFalse(Metrics.MetricsFlag.counterDisabled());
275276
assertTrue(Metrics.MetricsFlag.stringSetDisabled());
276277
Metrics.resetDefaultPipelineOptions();
278+
options = PipelineOptionsFactory.fromArgs("--experiments=disableBoundedTrieMetrics").create();
279+
Metrics.setDefaultPipelineOptions(options);
280+
assertFalse(Metrics.MetricsFlag.counterDisabled());
281+
assertFalse(Metrics.MetricsFlag.stringSetDisabled());
282+
assertTrue(Metrics.MetricsFlag.boundedTrieDisabled());
283+
Metrics.resetDefaultPipelineOptions();
277284
}
278285
}
279286

0 commit comments

Comments
 (0)