aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Premont-Tendland <sebastien.premont@bell.ca>2020-02-17 11:14:02 -0500
committerSebastien Premont-Tendland <sebastien.premont@bell.ca>2020-02-17 11:30:57 -0500
commitaa7eeb999f1fcb7edc190fbcefe9747fc6e63059 (patch)
treea84dffc4fdde79555ae81602e6c1c69eb55a9768
parente0e8b14e106cff2dccc76e6edcc1a7ee6ffe10da (diff)
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 <sebastien.premont@bell.ca> Change-Id: I0034145c7acefa88ed8d16f23a29249c7225ace3
-rwxr-xr-xms/blueprintsprocessor/application/src/main/docker/Dockerfile13
-rw-r--r--ms/blueprintsprocessor/application/src/main/docker/startService.sh2
-rw-r--r--ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt7
-rw-r--r--ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.kt3
-rw-r--r--ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt8
5 files changed, 17 insertions, 16 deletions
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 <T> 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)