Skip to content

Commit

Permalink
Add warning for duplicate instance name (#484)
Browse files Browse the repository at this point in the history
  • Loading branch information
rayz authored Nov 1, 2023
1 parent 2c88ecc commit 07c3f70
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion src/main/java/org/datadog/jmxfetch/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -828,6 +830,7 @@ public void init(final boolean forceNewConnection) {
this.brokenInstanceMap.clear();

final List<Instance> newInstances = new ArrayList<>();
final Set<String> instanceNamesSeen = new HashSet<>();

log.info("Dealing with YAML config instances...");
final Iterator<Entry<String, YamlParser>> it = this.configs.entrySet().iterator();
Expand Down Expand Up @@ -867,7 +870,16 @@ public void init(final boolean forceNewConnection) {
isDirectInstance(configInstance));
continue;
}

final String instanceName = (String) configInstance.get("name");
if (instanceName != null) {
if (instanceNamesSeen.contains(instanceName)) {
log.warn("Found multiple instances with name: '{}'. "
+ "Instance names should be unique, "
+ "update the 'name' field on your instances to be unique.",
instanceName);
}
instanceNamesSeen.add(instanceName);
}
// Create a new Instance object
log.info("Instantiating instance for: {}", name);
final Instance instance =
Expand All @@ -893,6 +905,16 @@ public void init(final boolean forceNewConnection) {
final String checkName = (String) checkConfig.get("check_name");
for (Map<String, Object> configInstance : configInstances) {
log.info("Instantiating instance for: " + checkName);
final String instanceName = (String) configInstance.get("name");
if (instanceName != null) {
if (instanceNamesSeen.contains(instanceName)) {
log.warn("Found multiple instances with name: '{}'. "
+ "Instance names should be unique, "
+ "update the 'name' field on your instances to be unique.",
instanceName);
}
instanceNamesSeen.add(instanceName);
}
final Instance instance =
instantiate(configInstance, initConfig, checkName, this.appConfig);
newInstances.add(instance);
Expand Down

0 comments on commit 07c3f70

Please sign in to comment.