diff options
author | Guangrong Fu <fu.guangrong@zte.com.cn> | 2021-12-02 09:52:12 +0800 |
---|---|---|
committer | Guangrong Fu <fu.guangrong@zte.com.cn> | 2021-12-02 09:52:12 +0800 |
commit | 7dedc836781b221c3a1945a8247be8ed23248a1e (patch) | |
tree | b4eb25c3b53340140a83e67c72d98b261351744c | |
parent | 5cc6fc1a762c547f420ce281deac69f02f6c2b83 (diff) |
Added exception protection.
Added try-catch block to prevent the polling thread from stop.
Issue-ID: HOLMES-488
Signed-off-by: Guangrong Fu <fu.guangrong@zte.com.cn>
Change-Id: Iebe943ab53e15428d90fe3ca271ca4a478936676
-rw-r--r-- | rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java b/rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java index 9f7b89f..88ab637 100644 --- a/rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java +++ b/rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java @@ -54,41 +54,46 @@ public class ConfigFileScanningTask implements Runnable { if (null == configFileScanner) { configFileScanner = new ConfigFileScanner(); } - Map<String, String> newConfig = extractConfigItems(configFileScanner.scan(configFile)); - List<RuleResult4API> deployedRules = getExistingRules(); - - // deal with newly added rules - final Set<String> existingKeys = new HashSet(configInEffect.keySet()); - final Set<String> newKeys = new HashSet(newConfig.keySet()); - newKeys.stream() - .filter(key -> !existingKeys.contains(key)) - .forEach(key -> { - if (deployRule(key, newConfig.get(key))) { - configInEffect.put(key, newConfig.get(key)); - LOGGER.info("Rule '{}' has been deployed.", key); - } - }); - - // deal with removed rules - existingKeys.stream().filter(key -> !newKeys.contains(key)).forEach(key -> { - if (deleteRule(find(deployedRules, key))) { - configInEffect.remove(key); - LOGGER.info("Rule '{}' has been removed.", key); - } - }); - - // deal with changed rules - existingKeys.stream().filter(key -> newKeys.contains(key)).forEach(key -> { - if (changed(configInEffect.get(key), newConfig.get(key))) { + try { + Map<String, String> newConfig = extractConfigItems(configFileScanner.scan(configFile)); + + List<RuleResult4API> deployedRules = getExistingRules(); + + // deal with newly added rules + final Set<String> existingKeys = new HashSet(configInEffect.keySet()); + final Set<String> newKeys = new HashSet(newConfig.keySet()); + newKeys.stream() + .filter(key -> !existingKeys.contains(key)) + .forEach(key -> { + if (deployRule(key, newConfig.get(key))) { + configInEffect.put(key, newConfig.get(key)); + LOGGER.info("Rule '{}' has been deployed.", key); + } + }); + + // deal with removed rules + existingKeys.stream().filter(key -> !newKeys.contains(key)).forEach(key -> { if (deleteRule(find(deployedRules, key))) { configInEffect.remove(key); - deployRule(key, newConfig.get(key)); - configInEffect.put(key, newConfig.get(key)); - LOGGER.info("Rule '{}' has been updated.", key); + LOGGER.info("Rule '{}' has been removed.", key); } - } - }); + }); + + // deal with changed rules + existingKeys.stream().filter(key -> newKeys.contains(key)).forEach(key -> { + if (changed(configInEffect.get(key), newConfig.get(key))) { + if (deleteRule(find(deployedRules, key))) { + configInEffect.remove(key); + deployRule(key, newConfig.get(key)); + configInEffect.put(key, newConfig.get(key)); + LOGGER.info("Rule '{}' has been updated.", key); + } + } + }); + } catch (Exception e) { + LOGGER.warn("Unhandled error: \n" + e.getMessage(), e); + } } private Map<String, String> extractConfigItems(Map<String, String> configFiles) { @@ -113,6 +118,7 @@ public class ConfigFileScanningTask implements Runnable { } return path; } + private String readFile(String path) { String finalPath = normalizePath(path); File file = new File(finalPath); |