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 2013/12/18 13:23:23 UTC
[48/50] [abbrv] git commit: [KARAF-2514] Improve Cellar config,
especially around configuration deletion
[KARAF-2514] Improve Cellar config, especially around configuration deletion
git-svn-id: https://svn.apache.org/repos/asf/karaf/cellar/trunk@1531345 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/karaf-cellar/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-cellar/commit/5fe65839
Tree: http://git-wip-us.apache.org/repos/asf/karaf-cellar/tree/5fe65839
Diff: http://git-wip-us.apache.org/repos/asf/karaf-cellar/diff/5fe65839
Branch: refs/heads/master
Commit: 5fe65839e4473d72dae4ac03515441a84fe7a5bc
Parents: ef5dec8
Author: jbonofre <jb...@13f79535-47bb-0310-9956-ffa450edef68>
Authored: Fri Oct 11 16:23:41 2013 +0000
Committer: jbonofre <jb...@13f79535-47bb-0310-9956-ffa450edef68>
Committed: Fri Oct 11 16:23:41 2013 +0000
----------------------------------------------------------------------
.../config/ClusterConfigurationEvent.java | 6 ++--
.../config/ConfigurationEventHandler.java | 17 +++++-----
.../config/LocalConfigurationListener.java | 34 +++++++++-----------
3 files changed, 27 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5fe65839/config/src/main/java/org/apache/karaf/cellar/config/ClusterConfigurationEvent.java
----------------------------------------------------------------------
diff --git a/config/src/main/java/org/apache/karaf/cellar/config/ClusterConfigurationEvent.java b/config/src/main/java/org/apache/karaf/cellar/config/ClusterConfigurationEvent.java
index d3eb7ee..9c51e44 100644
--- a/config/src/main/java/org/apache/karaf/cellar/config/ClusterConfigurationEvent.java
+++ b/config/src/main/java/org/apache/karaf/cellar/config/ClusterConfigurationEvent.java
@@ -20,17 +20,17 @@ import org.apache.karaf.cellar.core.event.Event;
*/
public class ClusterConfigurationEvent extends Event {
- private int type;
+ private Integer type;
public ClusterConfigurationEvent(String id) {
super(id);
}
- public int getType() {
+ public Integer getType() {
return type;
}
- public void setType(int type) {
+ public void setType(Integer type) {
this.type = type;
}
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5fe65839/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java
----------------------------------------------------------------------
diff --git a/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java b/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java
index 7cf7211..e1d87ad 100644
--- a/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java
+++ b/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java
@@ -72,28 +72,29 @@ public class ConfigurationEventHandler extends ConfigurationSupport implements E
if (isAllowed(event.getSourceGroup(), Constants.CATEGORY, pid, EventType.INBOUND)) {
Properties clusterDictionary = clusterConfigurations.get(pid);
- Configuration conf;
try {
- conf = configurationAdmin.getConfiguration(pid, null);
+ // update the local configuration
+ Configuration[] localConfigurations = configurationAdmin.listConfigurations("(service.pid=" + pid + ")");
if (event.getType() == ConfigurationEvent.CM_DELETED) {
- if (conf.getProperties() != null) {
- // delete the properties
- conf.delete();
+ // delete the configuration
+ if (localConfigurations != null && localConfigurations.length > 0) {
+ localConfigurations[0].delete();
deleteStorage(pid);
}
} else {
if (clusterDictionary != null) {
- Dictionary localDictionary = conf.getProperties();
+ Configuration localConfiguration = configurationAdmin.getConfiguration(pid, null);
+ Dictionary localDictionary = localConfiguration.getProperties();
if (localDictionary == null)
localDictionary = new Properties();
localDictionary = filter(localDictionary);
if (!equals(clusterDictionary, localDictionary)) {
- conf.update((Dictionary) clusterDictionary);
+ localConfiguration.update((Dictionary) clusterDictionary);
persistConfiguration(configurationAdmin, pid, clusterDictionary);
}
}
}
- } catch (IOException ex) {
+ } catch (Exception ex) {
LOGGER.error("CELLAR CONFIG: failed to read cluster configuration", ex);
}
} else LOGGER.debug("CELLAR CONFIG: configuration PID {} is marked BLOCKED INBOUND for cluster group {}", pid, groupName);
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/5fe65839/config/src/main/java/org/apache/karaf/cellar/config/LocalConfigurationListener.java
----------------------------------------------------------------------
diff --git a/config/src/main/java/org/apache/karaf/cellar/config/LocalConfigurationListener.java b/config/src/main/java/org/apache/karaf/cellar/config/LocalConfigurationListener.java
index f35d9fb..83d83aa 100644
--- a/config/src/main/java/org/apache/karaf/cellar/config/LocalConfigurationListener.java
+++ b/config/src/main/java/org/apache/karaf/cellar/config/LocalConfigurationListener.java
@@ -52,17 +52,6 @@ public class LocalConfigurationListener extends ConfigurationSupport implements
String pid = event.getPid();
- Dictionary localDictionary = null;
- if (event.getType() != ConfigurationEvent.CM_DELETED) {
- try {
- Configuration conf = configurationAdmin.getConfiguration(pid, null);
- localDictionary = conf.getProperties();
- } catch (Exception e) {
- LOGGER.error("CELLAR CONFIG: can't retrieve configuration with PID {}", pid, e);
- return;
- }
- }
-
Set<Group> groups = groupManager.listLocalGroups();
if (groups != null && !groups.isEmpty()) {
@@ -74,15 +63,22 @@ public class LocalConfigurationListener extends ConfigurationSupport implements
try {
if (event.getType() == ConfigurationEvent.CM_DELETED) {
- // update the configurations in the cluster group
- clusterConfigurations.remove(pid);
- // broadcast the cluster event
- ClusterConfigurationEvent clusterConfigurationEvent = new ClusterConfigurationEvent(pid);
- clusterConfigurationEvent.setType(ConfigurationEvent.CM_DELETED);
- clusterConfigurationEvent.setSourceNode(clusterManager.getNode());
- clusterConfigurationEvent.setSourceGroup(group);
- eventProducer.produce(clusterConfigurationEvent);
+
+ if (clusterConfigurations.containsKey(pid)) {
+ // update the configurations in the cluster group
+ clusterConfigurations.remove(pid);
+ // broadcast the cluster event
+ ClusterConfigurationEvent clusterConfigurationEvent = new ClusterConfigurationEvent(pid);
+ clusterConfigurationEvent.setType(event.getType());
+ clusterConfigurationEvent.setSourceNode(clusterManager.getNode());
+ clusterConfigurationEvent.setSourceGroup(group);
+ eventProducer.produce(clusterConfigurationEvent);
+ }
+
} else {
+
+ Configuration conf = configurationAdmin.getConfiguration(pid, null);
+ Dictionary localDictionary = conf.getProperties();
localDictionary = filter(localDictionary);
Properties distributedDictionary = clusterConfigurations.get(pid);