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
diff --git a/ms/blueprintsprocessor/application/src/main/docker/Dockerfile b/ms/blueprintsprocessor/application/src/main/docker/Dockerfile
index 2a85f1c..1035915 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 @@
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 a9d3992..fb44ffd 100644
--- a/ms/blueprintsprocessor/application/src/main/docker/startService.sh
+++ b/ms/blueprintsprocessor/application/src/main/docker/startService.sh
@@ -18,4 +18,6 @@
-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 f7296d4..2284a6f 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.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 @@
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 3709a97..1d1baee 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 @@
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 @@
* @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 0964145..6be3334 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 @@
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 @@
} 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 @@
}
/** 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 BlueprintsClusterMembershipListener(val hazlecastClusterService: HazlecastClusterService) :
+open class BlueprintsClusterMembershipListener() :
MembershipListener {
private val log = logger(BlueprintsClusterMembershipListener::class)