From 99f96b25b90a5abee2d4d9618785c8bd32f041a1 Mon Sep 17 00:00:00 2001 From: raymond zhao Date: Wed, 11 Oct 2023 16:09:03 -0400 Subject: [PATCH] Add warning for duplicate instance name --- src/main/java/org/datadog/jmxfetch/App.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/datadog/jmxfetch/App.java b/src/main/java/org/datadog/jmxfetch/App.java index ddb6f1de8..c131791c3 100644 --- a/src/main/java/org/datadog/jmxfetch/App.java +++ b/src/main/java/org/datadog/jmxfetch/App.java @@ -29,11 +29,13 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.concurrent.CancellationException; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; @@ -828,6 +830,8 @@ public void init(final boolean forceNewConnection) { this.brokenInstanceMap.clear(); final List newInstances = new ArrayList<>(); + // used to track instance names already seen + Set instanceNames = new HashSet(); log.info("Dealing with YAML config instances..."); final Iterator> it = this.configs.entrySet().iterator(); @@ -867,7 +871,11 @@ public void init(final boolean forceNewConnection) { isDirectInstance(configInstance)); continue; } - + final String instanceName = (String) configInstance.get("name"); + if (instanceNames.contains(instanceName)) { + log.warn("Instance with name: {} already exists", instanceName); + } + instanceNames.add(instanceName); // Create a new Instance object log.info("Instantiating instance for: {}", name); final Instance instance = @@ -893,6 +901,11 @@ public void init(final boolean forceNewConnection) { final String checkName = (String) checkConfig.get("check_name"); for (Map configInstance : configInstances) { log.info("Instantiating instance for: " + checkName); + final String instanceName = (String) configInstance.get("name"); + if (instanceNames.contains(instanceName)) { + log.warn("Instance with name: {} already exists", instanceName); + } + instanceNames.add(instanceName); final Instance instance = instantiate(configInstance, initConfig, checkName, this.appConfig); newInstances.add(instance);