in gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariConfigurationMonitor.java [489:532]
public void run() {
isActive = true;
log.startedAmbariConfigMonitor(interval);
while (isActive) {
for (Map.Entry<String, List<String>> entry : delegate.getClusterNames().entrySet()) {
String address = entry.getKey();
for (String clusterName : entry.getValue()) {
Map<String, String> configVersions = delegate.getClusterConfigVersions(address, clusterName);
if (configVersions != null && !configVersions.isEmpty()) {
Map<String, String> updatedVersions = delegate.getUpdatedConfigVersions(address, clusterName);
if (updatedVersions != null && !updatedVersions.isEmpty()) {
boolean configHasChanged = false;
// If the config sets don't match in size, then something has changed
if (updatedVersions.size() != configVersions.size()) {
configHasChanged = true;
} else {
// Perform the comparison of all the config versions
for (Map.Entry<String, String> configVersion : configVersions.entrySet()) {
if (!updatedVersions.get(configVersion.getKey()).equals(configVersion.getValue())) {
configHasChanged = true;
break;
}
}
}
// If a change has occurred, notify the listeners
if (configHasChanged) {
delegate.notifyChangeListeners(address, clusterName);
}
}
}
}
}
try {
Thread.sleep(interval * 1000L);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}