Skip to content

Commit 79ce047

Browse files
committed
Adds env vars to enable subscription globally for validation
1 parent d1bd7b8 commit 79ce047

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/main/java/org/datadog/jmxfetch/Instance.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.List;
2020
import java.util.Map;
2121
import java.util.Map.Entry;
22+
import java.util.Random;
2223
import java.util.Set;
2324

2425
import javax.management.InstanceNotFoundException;
@@ -270,10 +271,18 @@ public Instance(
270271
this.enableBeanSubscription = enableBeanSubscription != null && enableBeanSubscription;
271272

272273
// Global override for enabling bean subscription on all instances
273-
String enableSubscriptionOverride = System.getenv("DD_JMXFETCH_ENABLE_BEAN_SUBSCRIPTION");
274-
if (enableSubscriptionOverride != null && enableSubscriptionOverride.equalsIgnoreCase("true")) {
274+
String enableSubscriptionOverride = System.getenv("DD_JMXFETCH_SUBSCRIPTION_ENABLED");
275+
if (enableSubscriptionOverride != null
276+
&& enableSubscriptionOverride.equalsIgnoreCase("true")) {
275277
this.enableBeanSubscription = true;
276278
}
279+
String subscriptionCoinFlip = System.getenv("DD_JMXFETCH_SUBSCRIPTION_FLIPCOIN");
280+
if (subscriptionCoinFlip != null && subscriptionCoinFlip.equalsIgnoreCase("true")) {
281+
Random rd = new Random();
282+
boolean enabled = rd.nextBoolean();
283+
this.enableBeanSubscription = enabled;
284+
}
285+
log.info("JMXFetch Subscription mode enabled={}", this.enableBeanSubscription);
277286
this.beanSubscriptionActive = false;
278287
}
279288

@@ -518,13 +527,16 @@ public synchronized List<Metric> getMetrics() throws IOException {
518527
}
519528

520529
long duration = System.currentTimeMillis() - this.lastCollectionTime;
521-
log.info("Collection of {} matching attributes finished in {}ms",
522-
matchingAttributes.size(), duration);
530+
log.info("Collection finished in {}ms. MatchingAttributes={} CollectedMetrics={}",
531+
duration, matchingAttributes.size(), metrics.size());
523532
return metrics;
524533
}
525534

526535
/** Returns whather or not the given period has elapsed since reference time. */
527536
public boolean isPeriodDue(long refTime, Integer refPeriod) {
537+
if (this.beanSubscriptionActive) {
538+
return false;
539+
}
528540
if ((System.currentTimeMillis() - refTime) / 1000 < refPeriod) {
529541
return false;
530542
} else {

0 commit comments

Comments
 (0)