Pablo Muñiz created KARAF-2477:
----------------------------------

             Summary: Configuration changes not persisted to file when 
cluster:config-propset is executed in a cluster of nodes
                 Key: KARAF-2477
                 URL: https://issues.apache.org/jira/browse/KARAF-2477
             Project: Karaf
          Issue Type: Bug
          Components: cellar-config
    Affects Versions: cellar-3.0.0
            Reporter: Pablo Muñiz


Let's suppose a cluster with two nodes: a producer and a consumer, both in 
default group.

>From producer node _cluster:config-propset_ command is executed to change a 
>property value in _org.apache.karaf.features_ PID.

Example:

{code}
$ cluster:config-propset default org.apache.karaf.features featuresBoot 
config,cellar
{code}

_featuresBoot_ value is changed on both nodes, but is not updated on 
_etc/org.apache.karaf.features.cfg_ file.

In karaf.log file a message like follows is written :

{code}
CELLAR CONFIG: retrieved event ClusterConfigurationEvent [type=0, 
id=org.apache.karaf.features, sourceNode=HazelcastNode [id=localhost:5701, 
host=localhost, port=5701], 
sourceGroup=org.apache.karaf.cellar.core.Group@5c13d641, destination=null, 
force=false, postPublish=false] while groupManager is not available yet
{code}

After debugging code I have found that _groupManager_ attribute is not 
initialized in class _org.apache.karaf.cellar.config.ConfigurationEventHandler_

_eventHandler_ bean definition in file 
_config/src/main/resources/OSGI-INF/blueprint/blueprint.xml_ has no dependency 
injection for _groupManager_.

Comparing this definition with other branches looks like a regression, because 
on branch cellar-2.2.x or cellar-2.3.x this bean definition is

{code}
            <!-- Cluster Event Handler -->
            <bean id="eventHandler" 
class="org.apache.karaf.cellar.config.ConfigurationEventHandler"
                  init-method="init" destroy-method="destroy">
                <property name="clusterManager" ref="clusterManager"/>
                <property name="groupManager" ref="groupManager"/>
                <property name="configurationAdmin" ref="configurationAdmin"/>
                <property name="storage" value="${storage}"/>
            </bean>
{code}

Injecting _groupManager_ definition will solve the issue.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to