Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-3682

Fabric --min-port and --zookeeper-server-port option are ignored when the ensemble is resized

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Major Major
    • jboss-fuse-6.2.1
    • jboss-fuse-6.2
    • Fabric8 v1
    • None
    • % %

      A fabric which is originally created using the following command which specifies an min-port and the initial zookeeper-server-port ignores the min-port option when the fabric is resized:

      fabric:create --clean --resolver localip --min-port 2183 --zookeeper-server-port 2183 --wait-for-provisioning
      

      The ensemble is then resized and the following error occurs:

      JBossFuse:karaf@root> fabric:ensemble-add rc2 rc3
      This will change of the zookeeper connection string.
      Are you sure want to proceed(yes/no):yes
      Error executing command: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /fabric/registry/containers/alive/root
      JBossFuse:karaf@root> ERROR: Bundle org.apache.felix.framework [0] EventDispatcher: Error during dispatch. (io.fabric8.api.FabricException: org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss)
      io.fabric8.api.FabricException: org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss
      	at io.fabric8.api.FabricException.launderThrowable(FabricException.java:43)
      	at io.fabric8.service.ZkDataStoreImpl.getContainers(ZkDataStoreImpl.java:240)
      	at io.fabric8.service.ZkDataStoreImpl.hasContainer(ZkDataStoreImpl.java:247)
      	at io.fabric8.service.FabricServiceImpl.getContainer(FabricServiceImpl.java:317)
      	at io.fabric8.service.FabricServiceImpl.getCurrentContainer(FabricServiceImpl.java:233)
      	at io.fabric8.agent.DeploymentAgent.updateMavenRepositoryConfiguration(DeploymentAgent.java:190)
      	at io.fabric8.agent.DeploymentAgent.access$500(DeploymentAgent.java:82)
      	at io.fabric8.agent.DeploymentAgent$1.addingService(DeploymentAgent.java:161)
      	at io.fabric8.agent.DeploymentAgent$1.addingService(DeploymentAgent.java:150)
      	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
      	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
      	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
      	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
      	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:894)
      	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:943)
      	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:794)
      	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:544)
      	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4445)
      	at org.apache.felix.framework.Felix.registerService(Felix.java:3431)
      	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
      	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:1003)
      	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:992)
      	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:134)
      	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:1044)
      	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:841)
      	at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:931)
      	at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:895)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1480)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1401)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:1210)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:1148)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1432)
      	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:943)
      	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:794)
      	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:544)
      	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4445)
      	at org.apache.felix.framework.Felix.registerService(Felix.java:3431)
      	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
      	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:1003)
      	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:992)
      	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:134)
      	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:1044)
      	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:841)
      	at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:931)
      	at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:895)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1480)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1401)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:1210)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:1148)
      	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1432)
      	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:943)
      	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:794)
      	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:544)
      	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4445)
      	at org.apache.felix.framework.Felix.registerService(Felix.java:3431)
      	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
      	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:353)
      	at io.fabric8.zookeeper.curator.ManagedCuratorFramework$State.stateChanged(ManagedCuratorFramework.java:151)
      	at org.apache.curator.framework.state.ConnectionStateManager$2.apply(ConnectionStateManager.java:259)
      	at org.apache.curator.framework.state.ConnectionStateManager$2.apply(ConnectionStateManager.java:255)
      	at org.apache.curator.framework.listen.ListenerContainer$1.run(ListenerContainer.java:92)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss
      	at org.apache.curator.ConnectionState.checkTimeouts(ConnectionState.java:198)
      	at org.apache.curator.ConnectionState.getZooKeeper(ConnectionState.java:88)
      	at org.apache.curator.CuratorZookeeperClient.getZooKeeper(CuratorZookeeperClient.java:115)
      	at org.apache.curator.framework.imps.CuratorFrameworkImpl.getZooKeeper(CuratorFrameworkImpl.java:474)
      	at org.apache.curator.framework.imps.ExistsBuilderImpl$2.call(ExistsBuilderImpl.java:172)
      	at org.apache.curator.framework.imps.ExistsBuilderImpl$2.call(ExistsBuilderImpl.java:161)
      	at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:107)
      	at org.apache.curator.framework.imps.ExistsBuilderImpl.pathInForeground(ExistsBuilderImpl.java:157)
      	at org.apache.curator.framework.imps.ExistsBuilderImpl.forPath(ExistsBuilderImpl.java:148)
      	at org.apache.curator.framework.imps.ExistsBuilderImpl.forPath(ExistsBuilderImpl.java:36)
      	at io.fabric8.zookeeper.utils.ZooKeeperUtils.getChildrenSafe(ZooKeeperUtils.java:133)
      	at io.fabric8.service.ZkDataStoreImpl.getContainers(ZkDataStoreImpl.java:238)
      	... 62 more
      

      Looking at the zookeeper.url property I see the zookeeper port is reset to port 2181:

      JBossFuse:karaf@root> config:list | grep zookeeper.url
         zookeeper.url = 192.168.1.20:2181,rhpro.home:2182,:2181
      JBossFuse:karaf@root> 
      

      For some other unknown reason one the hostnames also was not set.

      Additionally, the containers should be using the localip resolver and this should cause all the URLs to use an IP address, but that doesn't appear to be the case either:

      JBossFuse:karaf@root> fabric:container-resolver-list
      [id]  [resolver]  [local hostname]  [local ip]    [public hostname]  [public ip]  [manual ip]
      root  localip     rhpro.home        192.168.1.20                                             
      rc1   localip     rhpro.home        192.168.1.20                                             
      rc2   localip     rhpro.home        192.168.1.20      
      rc3   localip     rhpro.home        192.168.1.20                                        
      JBossFuse:karaf@root>
      

      This also will destroy another fabric instance running on the same machine which is currently using port 2181.

            rhn-support-rkieley Roderick Kieley
            rhn-support-jsherman Jason Sherman
            Votes:
            1 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: