diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java index 20c50b5763..e1abe4eaa2 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java @@ -1050,6 +1050,10 @@ public class FlowController implements EventAccess, ControllerServiceProvider, H processScheduler.shutdown(); } + if ( contentRepository != null ) { + contentRepository.shutdown(); + } + if ( provenanceEventRepository != null ) { try { provenanceEventRepository.close(); diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java index ba74295122..5fbbfd5533 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java @@ -223,6 +223,12 @@ public class FileSystemRepository implements ContentRepository { this.contentClaimManager = claimManager; } + @Override + public void shutdown() { + executor.shutdown(); + containerCleanupExecutor.shutdown(); + } + private static double getRatio(final String value) { final String trimmed = value.trim(); final String percentage = trimmed.substring(0, trimmed.length() - 1); diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java index 1a44725ba3..e39436e839 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java @@ -137,6 +137,11 @@ public class VolatileContentRepository implements ContentRepository { public void initialize(final ContentClaimManager claimManager) { this.claimManager = claimManager; } + + @Override + public void shutdown() { + executor.shutdown(); + } /** * Specifies a Backup Repository where data should be written if this diff --git a/nifi-api/src/main/java/org/apache/nifi/controller/repository/ContentRepository.java b/nifi-api/src/main/java/org/apache/nifi/controller/repository/ContentRepository.java index 7012cb3a48..d66b8a6499 100644 --- a/nifi-api/src/main/java/org/apache/nifi/controller/repository/ContentRepository.java +++ b/nifi-api/src/main/java/org/apache/nifi/controller/repository/ContentRepository.java @@ -45,6 +45,12 @@ public interface ContentRepository { */ void initialize(ContentClaimManager claimManager) throws IOException; + /** + * Shuts down the Content Repository, freeing any resources that may be held. + * This is called when an administrator shuts down NiFi. + */ + void shutdown(); + /** * Returns the names of all Containers that exist for this Content * Repository