From 74cf06f7af65c699187f9e268db58023db2e2a62 Mon Sep 17 00:00:00 2001 From: mpriyank Date: Fri, 28 Apr 2023 15:02:00 +0100 Subject: Align the hazelcast cluster names - We need to align the hazelcast cluster names as members of the same cluster can join each other. We will still have exclusivity as the instance names and configs are different for each distributed object. - Exposing env variable to override the cluster name depending on the env it is run on. - Modified test cases to validate the cluster names as well Issue-ID: CPS-1637 Change-Id: Ib0f8c80dc9b2268f976b0c2d3ccd6d64792d4781 Signed-off-by: mpriyank --- cps-application/src/main/resources/application.yml | 1 + .../embeddedcache/SynchronizationCacheConfig.java | 13 ++++------- .../avc/ForwardedSubscriptionEventCacheConfig.java | 3 +-- .../SynchronizationCacheConfigSpec.groovy | 26 ++++++++++++++-------- ...orwardedSubscriptionEventCacheConfigSpec.groovy | 8 ++++--- .../src/test/resources/application.yml | 1 + .../org/onap/cps/cache/AnchorDataCacheConfig.java | 3 +-- .../org/onap/cps/cache/HazelcastCacheConfig.java | 10 +++++---- .../cps/cache/AnchorDataCacheConfigSpec.groovy | 8 ++++--- cps-service/src/test/resources/application.yml | 1 + 10 files changed, 42 insertions(+), 32 deletions(-) diff --git a/cps-application/src/main/resources/application.yml b/cps-application/src/main/resources/application.yml index 1eb1c11f20..ccd09c8555 100644 --- a/cps-application/src/main/resources/application.yml +++ b/cps-application/src/main/resources/application.yml @@ -199,6 +199,7 @@ ncmp: # Custom Hazelcast Config. hazelcast: + cluster-name: ${CPS_NCMP_CACHES_CLUSTER_NAME:"cps-and-ncmp-common-cache-cluster"} mode: kubernetes: enabled: ${HAZELCAST_MODE_KUBERNETES_ENABLED:false} diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfig.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfig.java index ff7afc9eb7..62a380ca5c 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfig.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfig.java @@ -51,9 +51,7 @@ public class SynchronizationCacheConfig extends HazelcastCacheConfig { */ @Bean public BlockingQueue moduleSyncWorkQueue() { - return createHazelcastInstance("moduleSyncWorkQueue", commonQueueConfig, - "synchronization-caches") - .getQueue("moduleSyncWorkQueue"); + return createHazelcastInstance("moduleSyncWorkQueue", commonQueueConfig).getQueue("moduleSyncWorkQueue"); } /** @@ -63,9 +61,8 @@ public class SynchronizationCacheConfig extends HazelcastCacheConfig { */ @Bean public IMap moduleSyncStartedOnCmHandles() { - return createHazelcastInstance("moduleSyncStartedOnCmHandles", moduleSyncStartedConfig, - "synchronization-caches") - .getMap("moduleSyncStartedOnCmHandles"); + return createHazelcastInstance("moduleSyncStartedOnCmHandles", moduleSyncStartedConfig).getMap( + "moduleSyncStartedOnCmHandles"); } /** @@ -75,8 +72,6 @@ public class SynchronizationCacheConfig extends HazelcastCacheConfig { */ @Bean public IMap dataSyncSemaphores() { - return createHazelcastInstance("dataSyncSemaphores", dataSyncSemaphoresConfig, - "synchronization-caches") - .getMap("dataSyncSemaphores"); + return createHazelcastInstance("dataSyncSemaphores", dataSyncSemaphoresConfig).getMap("dataSyncSemaphores"); } } diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfig.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfig.java index d2c3dc2599..443ebc627a 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfig.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfig.java @@ -45,7 +45,6 @@ public class ForwardedSubscriptionEventCacheConfig extends HazelcastCacheConfig @Bean public IMap> forwardedSubscriptionEventCache() { return createHazelcastInstance("hazelCastInstanceSubscriptionEvents", - forwardedSubscriptionEventCacheMapConfig, "cps-ncmp-service-caches") - .getMap("forwardedSubscriptionEventCache"); + forwardedSubscriptionEventCacheMapConfig).getMap("forwardedSubscriptionEventCache"); } } diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfigSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfigSpec.groovy index 567debdded..c0fc18abfc 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfigSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfigSpec.groovy @@ -59,20 +59,28 @@ class SynchronizationCacheConfigSpec extends Specification { def 'Verify configs for Distributed objects'(){ given: 'the Module Sync Work Queue config' - def queueConfig = Hazelcast.getHazelcastInstanceByName('moduleSyncWorkQueue').config.queueConfigs.get('defaultQueueConfig') + def moduleSyncWorkQueueConfig = Hazelcast.getHazelcastInstanceByName('moduleSyncWorkQueue').config + def moduleSyncDefaultWorkQueueConfig = moduleSyncWorkQueueConfig.queueConfigs.get('defaultQueueConfig') and: 'the Module Sync Started Cm Handle Map config' - def moduleSyncStartedOnCmHandlesConfig = Hazelcast.getHazelcastInstanceByName('moduleSyncStartedOnCmHandles').config.mapConfigs.get('moduleSyncStartedConfig') + def moduleSyncStartedOnCmHandlesConfig = Hazelcast.getHazelcastInstanceByName('moduleSyncStartedOnCmHandles').config + def moduleSyncStartedOnCmHandlesMapConfig = moduleSyncStartedOnCmHandlesConfig.mapConfigs.get('moduleSyncStartedConfig') and: 'the Data Sync Semaphores Map config' - def dataSyncSemaphoresConfig = Hazelcast.getHazelcastInstanceByName('dataSyncSemaphores').config.mapConfigs.get('dataSyncSemaphoresConfig') + def dataSyncSemaphoresConfig = Hazelcast.getHazelcastInstanceByName('dataSyncSemaphores').config + def dataSyncSemaphoresMapConfig = dataSyncSemaphoresConfig.mapConfigs.get('dataSyncSemaphoresConfig') expect: 'system created instance with correct config of Module Sync Work Queue' - assert queueConfig.backupCount == 3 - assert queueConfig.asyncBackupCount == 3 + assert moduleSyncDefaultWorkQueueConfig.backupCount == 3 + assert moduleSyncDefaultWorkQueueConfig.asyncBackupCount == 3 and: 'Module Sync Started Cm Handle Map has the correct settings' - assert moduleSyncStartedOnCmHandlesConfig.backupCount == 3 - assert moduleSyncStartedOnCmHandlesConfig.asyncBackupCount == 3 + assert moduleSyncStartedOnCmHandlesMapConfig.backupCount == 3 + assert moduleSyncStartedOnCmHandlesMapConfig.asyncBackupCount == 3 and: 'Data Sync Semaphore Map has the correct settings' - assert dataSyncSemaphoresConfig.backupCount == 3 - assert dataSyncSemaphoresConfig.asyncBackupCount == 3 + assert dataSyncSemaphoresMapConfig.backupCount == 3 + assert dataSyncSemaphoresMapConfig.asyncBackupCount == 3 + and: 'all instances are part of same cluster' + def testClusterName = 'cps-and-ncmp-test-caches' + assert moduleSyncWorkQueueConfig.clusterName == testClusterName + assert moduleSyncStartedOnCmHandlesConfig.clusterName == testClusterName + assert dataSyncSemaphoresConfig.clusterName == testClusterName } def 'Verify deployment network configs for Distributed objects'() { diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfigSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfigSpec.groovy index 7448daf598..03d3a1c105 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfigSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfigSpec.groovy @@ -44,10 +44,12 @@ class ForwardedSubscriptionEventCacheConfigSpec extends Specification { def 'Verify configs for Distributed Caches'(){ given: 'the Forwarded Subscription Event Cache config' - def forwardedSubscriptionEventCacheConfig = Hazelcast.getHazelcastInstanceByName('hazelCastInstanceSubscriptionEvents').config.mapConfigs.get('forwardedSubscriptionEventCacheMapConfig') + def forwardedSubscriptionEventCacheConfig = Hazelcast.getHazelcastInstanceByName('hazelCastInstanceSubscriptionEvents').config + def forwardedSubscriptionEventCacheMapConfig = forwardedSubscriptionEventCacheConfig.mapConfigs.get('forwardedSubscriptionEventCacheMapConfig') expect: 'system created instance with correct config' - assert forwardedSubscriptionEventCacheConfig.backupCount == 3 - assert forwardedSubscriptionEventCacheConfig.asyncBackupCount == 3 + assert forwardedSubscriptionEventCacheConfig.clusterName == 'cps-and-ncmp-test-caches' + assert forwardedSubscriptionEventCacheMapConfig.backupCount == 3 + assert forwardedSubscriptionEventCacheMapConfig.asyncBackupCount == 3 } def 'Verify deployment network configs for Distributed Caches'() { diff --git a/cps-ncmp-service/src/test/resources/application.yml b/cps-ncmp-service/src/test/resources/application.yml index 679248ba86..66194ad9e5 100644 --- a/cps-ncmp-service/src/test/resources/application.yml +++ b/cps-ncmp-service/src/test/resources/application.yml @@ -39,6 +39,7 @@ ncmp: # Custom Hazelcast Config. hazelcast: + cluster-name: "cps-and-ncmp-test-caches" mode: kubernetes: enabled: false diff --git a/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java b/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java index 5ee6b3804e..efe19c6cb7 100644 --- a/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java +++ b/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java @@ -40,7 +40,6 @@ public class AnchorDataCacheConfig extends HazelcastCacheConfig { */ @Bean public IMap anchorDataCache() { - return createHazelcastInstance("hazelCastInstanceCpsCore", anchorDataCacheMapConfig, "cps-service-caches") - .getMap("anchorDataCache"); + return createHazelcastInstance("hazelCastInstanceCpsCore", anchorDataCacheMapConfig).getMap("anchorDataCache"); } } diff --git a/cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java b/cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java index 4aebceae0a..405e6e2a88 100644 --- a/cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java +++ b/cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java @@ -35,6 +35,9 @@ import org.springframework.beans.factory.annotation.Value; @Slf4j public class HazelcastCacheConfig { + @Value("${hazelcast.cluster-name}") + protected String clusterName; + @Value("${hazelcast.mode.kubernetes.enabled}") protected boolean cacheKubernetesEnabled; @@ -42,12 +45,11 @@ public class HazelcastCacheConfig { protected String cacheKubernetesServiceName; protected HazelcastInstance createHazelcastInstance(final String hazelcastInstanceName, - final NamedConfig namedConfig, final String clusterName) { - return Hazelcast.newHazelcastInstance(initializeConfig(hazelcastInstanceName, namedConfig, clusterName)); + final NamedConfig namedConfig) { + return Hazelcast.newHazelcastInstance(initializeConfig(hazelcastInstanceName, namedConfig)); } - private Config initializeConfig(final String instanceName, final NamedConfig namedConfig, - final String clusterName) { + private Config initializeConfig(final String instanceName, final NamedConfig namedConfig) { final Config config = new Config(instanceName); if (namedConfig instanceof MapConfig) { config.addMapConfig((MapConfig) namedConfig); diff --git a/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy index 76b5345534..e219945d83 100644 --- a/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy @@ -46,10 +46,12 @@ class AnchorDataCacheConfigSpec extends Specification { def 'Verify configs for Distributed Caches'(){ given: 'the Anchor Data Cache config' - def anchorDataCacheConfig = Hazelcast.getHazelcastInstanceByName('hazelCastInstanceCpsCore').config.mapConfigs.get('anchorDataCacheMapConfig') + def anchorDataCacheConfig = Hazelcast.getHazelcastInstanceByName('hazelCastInstanceCpsCore').config + def anchorDataCacheMapConfig = anchorDataCacheConfig.mapConfigs.get('anchorDataCacheMapConfig') expect: 'system created instance with correct config' - assert anchorDataCacheConfig.backupCount == 3 - assert anchorDataCacheConfig.asyncBackupCount == 3 + assert anchorDataCacheConfig.clusterName == 'cps-and-ncmp-test-caches' + assert anchorDataCacheMapConfig.backupCount == 3 + assert anchorDataCacheMapConfig.asyncBackupCount == 3 } def 'Verify deployment network configs for Distributed Caches'() { diff --git a/cps-service/src/test/resources/application.yml b/cps-service/src/test/resources/application.yml index 21f3745337..dc100667ba 100644 --- a/cps-service/src/test/resources/application.yml +++ b/cps-service/src/test/resources/application.yml @@ -51,6 +51,7 @@ logging: # Custom Hazelcast Config. hazelcast: + cluster-name: "cps-and-ncmp-test-caches" mode: kubernetes: enabled: false -- cgit 1.2.3-korg