From eeb505ca890b8c33c3344689fc415f5a88d3039d Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 4 Jul 2017 15:02:26 +0100 Subject: [PATCH] Clean up resources when deployer app is closed --- pipeline.yml | 2 ++ .../deployer/FunctionExtractingFunctionCatalog.java | 11 ++++++++++- .../cloud/function/deployer/AdhocTestSuite.java | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/pipeline.yml b/pipeline.yml index 9b0dead16..d1e1beeae 100644 --- a/pipeline.yml +++ b/pipeline.yml @@ -39,6 +39,7 @@ jobs: slack-failure: &slack-failure put: slack params: + channel: spring-cloud-firehose attachments: - color: danger fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " @@ -49,6 +50,7 @@ slack-failure: &slack-failure slack-success: &slack-success put: slack params: + channel: spring-cloud-firehose attachments: - color: good fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " diff --git a/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalog.java b/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalog.java index f4fe6cdc1..d42e3a8c9 100644 --- a/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalog.java +++ b/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalog.java @@ -18,6 +18,7 @@ package org.springframework.cloud.function.deployer; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; @@ -29,6 +30,7 @@ import java.util.function.Supplier; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.DisposableBean; import org.springframework.boot.loader.thin.ArchiveUtils; import org.springframework.cloud.deployer.spi.app.AppDeployer; import org.springframework.cloud.deployer.spi.core.AppDefinition; @@ -42,7 +44,7 @@ import org.springframework.core.io.Resource; import org.springframework.util.MethodInvoker; public class FunctionExtractingFunctionCatalog - implements FunctionCatalog, FunctionInspector { + implements FunctionCatalog, FunctionInspector, DisposableBean { private static Log logger = LogFactory .getLog(FunctionExtractingFunctionCatalog.class); @@ -63,6 +65,13 @@ public class FunctionExtractingFunctionCatalog deployer = new ThinJarAppDeployer(name, profiles); } + @Override + public void destroy() throws Exception { + for (String name : new HashSet<>(names.keySet())) { + undeploy(name); + } + } + @SuppressWarnings("unchecked") @Override public Consumer lookupConsumer(String name) { diff --git a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/AdhocTestSuite.java b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/AdhocTestSuite.java index 5fc611692..c4a7a338d 100644 --- a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/AdhocTestSuite.java +++ b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/AdhocTestSuite.java @@ -27,8 +27,8 @@ import org.junit.runners.Suite.SuiteClasses; * @author Dave Syer */ @RunWith(Suite.class) -@SuiteClasses({ FunctionAppDeployerTests.class, - FunctionExtractingFunctionCatalogIntegrationTests.class }) +@SuiteClasses({ FunctionExtractingFunctionCatalogIntegrationTests.class, + FunctionExtractingFunctionCatalogTests.class }) @Ignore public class AdhocTestSuite {