You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2020/06/29 13:57:22 UTC

[karaf-cellar] branch master updated: Hazelcast loop (#71)

This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf-cellar.git


The following commit(s) were added to refs/heads/master by this push:
     new 26fdbb9  Hazelcast loop (#71)
26fdbb9 is described below

commit 26fdbb9c6bfe62c0e7f5379b1c8cbab5540d567d
Author: Thomas Draier <td...@jahia.com>
AuthorDate: Mon Jun 29 15:57:15 2020 +0200

    Hazelcast loop (#71)
    
    Avoid loop in hazelcast configuration update
---
 .../org/apache/karaf/cellar/hazelcast/HazelcastGroupManager.java  | 8 ++++----
 .../apache/karaf/cellar/hazelcast/internal/osgi/Activator.java    | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/HazelcastGroupManager.java b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/HazelcastGroupManager.java
index 835b547..d401e94 100644
--- a/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/HazelcastGroupManager.java
+++ b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/HazelcastGroupManager.java
@@ -26,7 +26,7 @@ import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.cm.ConfigurationEvent;
-import org.osgi.service.cm.ConfigurationListener;
+import org.osgi.service.cm.SynchronousConfigurationListener;
 import org.slf4j.Logger;
 
 import java.io.IOException;
@@ -37,7 +37,7 @@ import java.util.*;
  * The role of this class is to provide means of creating groups, setting nodes to groups etc.
  * Keep in sync the distributed group configuration with the locally persisted.
  */
-public class HazelcastGroupManager implements GroupManager, EntryListener<String,Object>, ConfigurationListener {
+public class HazelcastGroupManager implements GroupManager, EntryListener<String,Object>, SynchronousConfigurationListener {
 
     private static final transient Logger LOGGER = org.slf4j.LoggerFactory.getLogger(HazelcastGroupManager.class);
 
@@ -108,7 +108,7 @@ public class HazelcastGroupManager implements GroupManager, EntryListener<String
         }
     }
 
-    private boolean updatePropertiesFromHazelcastMap(Dictionary<String, Object> properties, String key, Object value) {
+    private synchronized boolean updatePropertiesFromHazelcastMap(Dictionary<String, Object> properties, String key, Object value) {
         if (!(value instanceof Map)) {
             return false;
         }
@@ -145,7 +145,7 @@ public class HazelcastGroupManager implements GroupManager, EntryListener<String
         return changed;
     }
 
-    private Map<String, Object> getUpdatesForHazelcastMap(Dictionary<String, Object> properties) {
+    private synchronized Map<String, Object> getUpdatesForHazelcastMap(Dictionary<String, Object> properties) {
         Map<String,Object> updates = new HashMap<String,Object>();
         if (properties == null) {
             return updates;
diff --git a/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/internal/osgi/Activator.java b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/internal/osgi/Activator.java
index 87593c1..96aad6d 100644
--- a/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/internal/osgi/Activator.java
+++ b/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/internal/osgi/Activator.java
@@ -45,8 +45,8 @@ import org.apache.karaf.util.tracker.annotation.Services;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.cm.ConfigurationAdmin;
-import org.osgi.service.cm.ConfigurationListener;
 import org.osgi.service.cm.ManagedService;
+import org.osgi.service.cm.SynchronousConfigurationListener;
 import org.osgi.util.tracker.ServiceTracker;
 import org.osgi.util.tracker.ServiceTrackerCustomizer;
 import org.slf4j.Logger;
@@ -199,7 +199,7 @@ public class Activator extends BaseActivator implements ManagedService {
         groupManager.setConfigurationAdmin(configurationAdmin);
         groupManager.setEventTransportFactory(eventTransportFactory);
         groupManager.init();
-        register(new Class[]{GroupManager.class, ConfigurationListener.class}, groupManager);
+        register(new Class[]{GroupManager.class, SynchronousConfigurationListener.class}, groupManager);
 
         LOGGER.debug("CELLAR HAZELCAST: create Cellar membership listener");
         CellarMembershipListener membershipListener = new CellarMembershipListener(hazelcastInstance);