From aa7eeb999f1fcb7edc190fbcefe9747fc6e63059 Mon Sep 17 00:00:00 2001 From: Sebastien Premont-Tendland Date: Mon, 17 Feb 2020 11:14:02 -0500 Subject: Removed manual shutdown hook for hazelcast Shutdown hook for hazelcast are already working with spring boot. Just changed the policy to GRACEFUL (default is TERMINATE). This allow hazelcast to shutdown gracefully and recover from a rolling upgrade Also updated the Dockerfile to use multi stage to reduce by ~200Mb the docker image size. Issue-ID: CCSDK-2011 Signed-off-by: Sebastien Premont-Tendland Change-Id: I0034145c7acefa88ed8d16f23a29249c7225ace3 --- .../application/src/main/docker/Dockerfile | 13 ++++++++----- .../application/src/main/docker/startService.sh | 2 ++ .../cds/blueprintsprocessor/BluePrintProcessorCluster.kt | 7 ------- .../blueprintsprocessor/BlueprintProcessorApplication.kt | 3 ++- .../core/cluster/HazlecastClusterService.kt | 8 +++++--- 5 files changed, 17 insertions(+), 16 deletions(-) (limited to 'ms/blueprintsprocessor') diff --git a/ms/blueprintsprocessor/application/src/main/docker/Dockerfile b/ms/blueprintsprocessor/application/src/main/docker/Dockerfile index 2a85f1c95..1035915f1 100755 --- a/ms/blueprintsprocessor/application/src/main/docker/Dockerfile +++ b/ms/blueprintsprocessor/application/src/main/docker/Dockerfile @@ -1,3 +1,10 @@ +FROM alpine:latest AS extractor +COPY @project.build.finalName@-@assembly.id@.tar.gz /source.tar.gz +RUN tar -xzf /source.tar.gz -C /tmp \ + && cp -rf /tmp/@project.build.finalName@/opt / \ + && rm -rf /source.tar.gz \ + && rm -rf /tmp/@project.build.finalName@ + FROM omahoco1/alpine-java-python # add entrypoint @@ -5,10 +12,6 @@ COPY startService.sh /startService.sh RUN chmod 777 /startService.sh && dos2unix /startService.sh # add application -COPY @project.build.finalName@-@assembly.id@.tar.gz /source.tar.gz -RUN tar -xzf /source.tar.gz -C /tmp \ - && cp -rf /tmp/@project.build.finalName@/opt / \ - && rm -rf /source.tar.gz \ - && rm -rf /tmp/@project.build.finalName@ +COPY --from=extractor /opt /opt ENTRYPOINT [ "/startService.sh" ] diff --git a/ms/blueprintsprocessor/application/src/main/docker/startService.sh b/ms/blueprintsprocessor/application/src/main/docker/startService.sh index a9d3992a2..fb44ffd1c 100644 --- a/ms/blueprintsprocessor/application/src/main/docker/startService.sh +++ b/ms/blueprintsprocessor/application/src/main/docker/startService.sh @@ -18,4 +18,6 @@ exec java -classpath "/etc:${APP_HOME}/lib/*:/lib/*:/src:/schema:/generated-sour -Djava.security.egd=file:/dev/./urandom \ -DAPPNAME=${APP_NAME} -DAPPENV=${APP_ENV} -DAPPVERSION=${APP_VERSION} -DNAMESPACE=${NAMESPACE} \ -Dspring.config.location=${APP_CONFIG_HOME}/ \ +-Dhazelcast.shutdownhook.policy=GRACEFUL \ +-Dhazelcast.graceful.shutdown.max.wait=600 \ org.onap.ccsdk.cds.blueprintsprocessor.BlueprintProcessorApplicationKt diff --git a/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt b/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt index f7296d421..2284a6fc0 100644 --- a/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt +++ b/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt @@ -25,9 +25,7 @@ import org.onap.ccsdk.cds.controllerblueprints.core.utils.ClusterUtils import org.springframework.boot.context.event.ApplicationReadyEvent import org.springframework.context.event.EventListener import org.springframework.stereotype.Component -import java.time.Duration import java.util.Properties -import javax.annotation.PreDestroy /** * To Start the cluster, minimum 2 Instances/ Replicas od CDS needed. @@ -85,9 +83,4 @@ open class BluePrintProcessorCluster(private val bluePrintClusterService: BluePr log.info("Cluster is disabled, to enable cluster set the environment CLUSTER_* properties.") } } - - @PreDestroy - fun shutDown() = runBlocking { - bluePrintClusterService.shutDown(Duration.ofMillis(1)) - } } diff --git a/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.kt b/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.kt index 3709a9785..1d1baeeef 100644 --- a/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.kt +++ b/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.kt @@ -19,6 +19,7 @@ package org.onap.ccsdk.cds.blueprintsprocessor import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.EnableAutoConfiguration import org.springframework.boot.autoconfigure.SpringBootApplication +import org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration import org.springframework.context.annotation.ComponentScan @@ -28,7 +29,7 @@ import org.springframework.context.annotation.ComponentScan * @author Brinda Santh */ @SpringBootApplication -@EnableAutoConfiguration(exclude = [DataSourceAutoConfiguration::class]) +@EnableAutoConfiguration(exclude = [DataSourceAutoConfiguration::class, HazelcastAutoConfiguration::class]) @ComponentScan(basePackages = ["org.onap.ccsdk.cds.blueprintsprocessor", "org.onap.ccsdk.cds.controllerblueprints"]) open class BlueprintProcessorApplication diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt index 09641458c..6be3334bb 100644 --- a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt +++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt @@ -54,7 +54,7 @@ open class HazlecastClusterService : BluePrintClusterService { var joinedLite = false override suspend fun startCluster(configuration: T) { - /** Get the Hazelcast Cliet or Server instance */ + /** Get the Hazelcast Client or Server instance */ hazelcast = when (configuration) { is Config -> { @@ -101,6 +101,8 @@ open class HazlecastClusterService : BluePrintClusterService { } else { /** Hazelcast Server from config file */ val hazelcastServerConfiguration = FileSystemYamlConfig(normalizedFile(configFile)) + hazelcastServerConfiguration.clusterName = configuration.id + hazelcastServerConfiguration.instanceName = configuration.nodeId hazelcastServerConfiguration.properties = configuration.properties hazelcastServerConfiguration.memberAttributeConfig = memberAttributeConfig joinedLite = hazelcastServerConfiguration.isLiteMember @@ -116,7 +118,7 @@ open class HazlecastClusterService : BluePrintClusterService { } /** Add the Membership Listeners */ - hazelcast.cluster.addMembershipListener(BlueprintsClusterMembershipListener(this)) + hazelcast.cluster.addMembershipListener(BlueprintsClusterMembershipListener()) log.info( "Cluster(${hazelcast.config.clusterName}) node(${hazelcast.name}) created successfully...." ) @@ -207,7 +209,7 @@ open class HazlecastClusterService : BluePrintClusterService { } } -open class BlueprintsClusterMembershipListener(val hazlecastClusterService: HazlecastClusterService) : +open class BlueprintsClusterMembershipListener() : MembershipListener { private val log = logger(BlueprintsClusterMembershipListener::class) -- cgit 1.2.3-korg