diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWrapper.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWrapper.java index b1eaac311b..0f193a48bf 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWrapper.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWrapper.java @@ -22,7 +22,6 @@ import org.apache.commons.lang3.StringUtils; import java.io.BufferedReader; -import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Properties; @@ -37,12 +36,14 @@ public class ConfigurationWrapper { public Logger logger = LoggerFactory.getLogger(this.getClass()); - + + private static final long TIME_INTERVAL = 30 * 1000L; + private String file; private Properties properties = new Properties(); - private boolean reload = true; + private boolean reload; private ScheduledExecutorService configLoader = ThreadPoolFactory.createSingleScheduledExecutor("eventMesh-configLoader-"); @@ -55,19 +56,18 @@ public ConfigurationWrapper(String file, boolean reload) { private void init() { load(); if (this.reload) { - configLoader.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - load(); - } - }, 30 * 1000, 30 * 1000, TimeUnit.MILLISECONDS); + configLoader.scheduleAtFixedRate(this::load, TIME_INTERVAL, TIME_INTERVAL, TimeUnit.MILLISECONDS); + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + logger.info("Configuration reload task closed"); + configLoader.shutdownNow(); + })); } } private void load() { try { logger.info("loading config: {}", file); - properties.load(new BufferedReader(new FileReader(new File(file)))); + properties.load(new BufferedReader(new FileReader(file))); } catch (IOException e) { logger.error("loading properties [{}] error", file, e); }