diff options
author | Lianhao Lu <lianhao.lu@intel.com> | 2019-04-11 10:26:45 +0800 |
---|---|---|
committer | Lianhao Lu <lianhao.lu@intel.com> | 2019-04-11 10:26:45 +0800 |
commit | c82614f968fb7941f7778873afa3bfad51ffd42f (patch) | |
tree | a7de1c1647d9b799a707ae7a8943a3f82e10d1d9 | |
parent | 87f514006bc79fa977a9924039e0f5b8e70a9e6b (diff) |
Gracefully release resource in file reception plugin
In the FileSystemReception plugin, we need to shutdown the thread pool
to release the resources gracefully.
Change-Id: I800e4070d7bf8c052d964139117a68dc48c50f76
Issue-ID: POLICY-1631
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
-rw-r--r-- | plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/file/FileSystemReceptionHandler.java | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/file/FileSystemReceptionHandler.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/file/FileSystemReceptionHandler.java index 0ddd2a92..56bca900 100644 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/file/FileSystemReceptionHandler.java +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/file/FileSystemReceptionHandler.java @@ -120,35 +120,38 @@ public class FileSystemReceptionHandler extends AbstractReceptionHandler { WatchKey key; ExecutorService pool = Executors.newFixedThreadPool(maxThread); - running = true; - while (running) { - key = watcher.take(); + try { + running = true; + while (running) { + key = watcher.take(); - for (final WatchEvent<?> event : key.pollEvents()) { - final WatchEvent<Path> ev = (WatchEvent<Path>) event; - final Path fileName = ev.context(); - pool.execute(new Runnable() { - public void run() { - LOGGER.debug("new CSAR found: {}", fileName); - DistributionStatisticsManager.updateTotalDistributionCount(); - final String fullFilePath = dir.toString() + File.separator + fileName.toString(); - try { - waitForFileToBeReady(fullFilePath); - createPolicyInputAndCallHandler(fullFilePath); - LOGGER.debug("CSAR complete: {}", fileName); - } catch (InterruptedException e) { - LOGGER.error("waitForFileToBeReady interrupted", e); + for (final WatchEvent<?> event : key.pollEvents()) { + final WatchEvent<Path> ev = (WatchEvent<Path>) event; + final Path fileName = ev.context(); + pool.execute(new Runnable() { + public void run() { + LOGGER.debug("new CSAR found: {}", fileName); + DistributionStatisticsManager.updateTotalDistributionCount(); + final String fullFilePath = dir.toString() + File.separator + fileName.toString(); + try { + waitForFileToBeReady(fullFilePath); + createPolicyInputAndCallHandler(fullFilePath); + LOGGER.debug("CSAR complete: {}", fileName); + } catch (InterruptedException e) { + LOGGER.error("waitForFileToBeReady interrupted", e); + } } - } - }); - } - final boolean valid = key.reset(); - if (!valid) { - LOGGER.error("Watch key no longer valid!"); - break; + }); + } + final boolean valid = key.reset(); + if (!valid) { + LOGGER.error("Watch key no longer valid!"); + break; + } } + } finally { + pool.shutdown(); } - pool.shutdown(); } /** |