Geronimo
  1. Geronimo
  2. GERONIMO-4892

Farm Deployment Error if deploy more than one applications

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.1.4, 2.2
    • Fix Version/s: 2.2.1
    • Component/s: commands
    • Security Level: public (Regular issues)
    • Labels:
      None
    • Environment:

      oS: winxp and win2003

    • Patch Info:
      Patch Available

      Description

      Win2003 as master node( NODE2) with config.xml
      ...
      <module name="org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car">
      <gbean name="org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car?ServiceModule=org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car,j2eeType=GBean,name=Node1" gbeanInfo="org.apache.geronimo.farm.config.BasicNodeInfo">
      <attribute name="name">NODE1</attribute>
      <attribute propertyEditor="org.apache.geronimo.farm.config.BasicExtendedJMXConnectorInfoEditor" name="extendedJMXConnectorInfo">
      <ns:javabean class="org.apache.geronimo.farm.config.BasicExtendedJMXConnectorInfo" xmlns="" xmlns:ns10="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns="http://geronimo.apache.org/xml/ns/deployment/javabean-1.0" xmlns:ns12="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns14="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns16="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns8_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns6_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns4="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns6="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns8="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns16_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns14_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns12_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns10_="http://geronimo.apache.org/xml/ns/attributes-1.2">
      <ns:property name="username">system</ns:property>
      <ns:property name="password">manager</ns:property>
      <ns:property name="protocol">rmi</ns:property>
      <ns:property name="host">9.186.10.167</ns:property>
      <ns:property name="port">1099</ns:property>
      <ns:property name="urlPath">JMXConnector</ns:property>
      <ns:property name="local">false</ns:property>
      </ns:javabean>
      </attribute>
      </gbean>
      <gbean name="NodeInfo">
      <attribute name="name">$

      {ClusterNodeName}</attribute>
      </gbean>
      <gbean name="ClusterInfo">
      <attribute name="name">${FarmName}</attribute>
      </gbean>
      </module>
      ...

      WinXP as node 1

      WinXp. as node 1
      ..
      <module name="org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car">
      <gbean name="org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car?ServiceModule=org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car,j2eeType=GBean,name=Node2" gbeanInfo="org.apache.geronimo.farm.config.BasicNodeInfo">
      <attribute name="name">NODE2</attribute>
      <attribute propertyEditor="org.apache.geronimo.farm.config.BasicExtendedJMXConnectorInfoEditor" name="extendedJMXConnectorInfo">
      <ns:javabean class="org.apache.geronimo.farm.config.BasicExtendedJMXConnectorInfo" xmlns="" xmlns:ns20="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns10="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns22="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns="http://geronimo.apache.org/xml/ns/deployment/javabean-1.0" xmlns:ns12="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns14="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns16="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns18="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns19="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns6_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns4="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns6="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns7="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns8="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns18_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns9="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns16_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns14_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns12_="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns:ns22_="http://geronimo.apache.org/xml/ns/attributes-1.2">
      <ns:property name="username">system</ns:property>
      <ns:property name="password">manager</ns:property>
      <ns:property name="protocol">rmi</ns:property>
      <ns:property name="host">9.186.10.67</ns:property>
      <ns:property name="port">1099</ns:property>
      <ns:property name="urlPath">JMXConnector</ns:property>
      <ns:property name="local">false</ns:property>
      </ns:javabean>
      </attribute>
      </gbean>
      <gbean name="NodeInfo">
      <attribute name="name">${ClusterNodeName}

      </attribute>
      </gbean>
      <gbean name="ClusterInfo">
      <attribute name="name">$

      {FarmName}

      </attribute>
      </gbean>
      </module>

      ..

      1.Following doc http://cwiki.apache.org/GMOxDOC22/farming-using-deployment.html to farm deploy apps
      with command:
      deploy.bat --user system --password manager deploy --targets org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car?ServiceModule=org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car,j2eeType=ConfigurationStore,name=MasterConfigurationStore %Sample_HOME%\applications\hello\target\hello-2.1.1.2.war

      2.First deploy hello.war, successfully, second deploy cviewer with command:
      deploy.bat --user system --password manager deploy --targets org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car?ServiceModule=org.apache.geronimo.configs/farming/2.2-SNAPSHOT/car,j2eeType=ConfigurationStore,name=MasterConfigurationStore %Sample_HOME%\applications\cviewer\target\cviewer-2.1.1.2.war
      but errors popup:
      2009-09-23 17:00:02,937 ERROR [DeployTool] Error:
      org.apache.geronimo.common.DeploymentException: Operation failed: start of com.ibm.wasce.samples/cviewer_G_MASTER/2.1.1.2/car failed
      org.apache.geronimo.kernel.GBeanAlreadyExistsException: GBean already registered: geronimo:J2EEServer=geronimo,nodeName=NODE1
      GBean already registered: geronimo:J2EEServer=geronimo,nodeName=NODE1

      at org.apache.geronimo.deployment.cli.CommandDistribute.executeOnline(CommandDistribute.java:169)
      at org.apache.geronimo.deployment.cli.CommandDistribute.execute(CommandDistribute.java:125)
      at org.apache.geronimo.deployment.cli.DeployTool.execute(DeployTool.java:168)
      at org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.main(MainConfigurationBootstrapper.java:45)
      at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
      at org.apache.geronimo.cli.deployer.DeployerCLI.main(DeployerCLI.java:31)

      3.After deployment, on master node, open web app modules porlet, hello and cviewer app don't exist in it, but in its master-repository and config.xml, on other cluster nodes, these apps exist

      1. GERONIMO-4892_updated.patch
        3 kB
        Ashish Jain
      2. 4892.patch
        3 kB
        Ashish Jain
      3. LOGS_4892.rar
        105 kB
        Amit Puri
      4. TwoFarm.zip
        9 kB
        viola.lu

        Issue Links

          Activity

          Hide
          Ashish Jain added a comment -

          Applied @rev 938021 to 2.2 branch.

          Show
          Ashish Jain added a comment - Applied @rev 938021 to 2.2 branch.
          Hide
          Ashish Jain added a comment -

          Patch to this problem has been applied through Geronimo-4900 to 2.1 branch. Request to review the same for 2.2.1 and help in applying it.

          Show
          Ashish Jain added a comment - Patch to this problem has been applied through Geronimo-4900 to 2.1 branch. Request to review the same for 2.2.1 and help in applying it.
          Hide
          Ashish Jain added a comment -

          Can someone help review and provide comments over the patch?

          Show
          Ashish Jain added a comment - Can someone help review and provide comments over the patch?
          Hide
          Ashish Jain added a comment -

          "geronimo" prefix is being used as per the JSR77Naming.createObjectName.

          Show
          Ashish Jain added a comment - "geronimo" prefix is being used as per the JSR77Naming.createObjectName.
          Hide
          Ashish Jain added a comment -

          Hi David, Thanks for your review and comment. I have modified the patch. I hope this will take care of any name collisions. Please apply to 2.1 and 2.2 branch. Thanks.

          Show
          Ashish Jain added a comment - Hi David, Thanks for your review and comment. I have modified the patch. I hope this will take care of any name collisions. Please apply to 2.1 and 2.2 branch. Thanks.
          Hide
          David Jencks added a comment -

          Committed patch in rev 884990 to branches/2.2

          I don't think this is an ideal solution. What if the 2 wars have the same artifactId but different configIds?

          I don't understand from the code why the artifactId isn't the first bit of the name, rather than "geronimo". If we are substituting "geronimo" for the artifactId everywhere we should run into this name collision much more often.

          Show
          David Jencks added a comment - Committed patch in rev 884990 to branches/2.2 I don't think this is an ideal solution. What if the 2 wars have the same artifactId but different configIds? I don't understand from the code why the artifactId isn't the first bit of the name, rather than "geronimo". If we are substituting "geronimo" for the artifactId everywhere we should run into this name collision much more often.
          Hide
          Ashish Jain added a comment -

          This conflict seems to be popping up in objectNameRegistry. The primary cause seems to be the way we are creating a controllerName in org.apache.geronimo.farm.deployment.MasterConfigurationStore.buildControllerGBean to which we pass the configId and nodeName. I have modified the logic of creating this in such a way that instead of using a singleton map we will use a map which will have nodeName plus the ArtifactId so that there are no further conflicts.
          Please verify the patch.

          Show
          Ashish Jain added a comment - This conflict seems to be popping up in objectNameRegistry. The primary cause seems to be the way we are creating a controllerName in org.apache.geronimo.farm.deployment.MasterConfigurationStore.buildControllerGBean to which we pass the configId and nodeName. I have modified the logic of creating this in such a way that instead of using a singleton map we will use a map which will have nodeName plus the ArtifactId so that there are no further conflicts. Please verify the patch.
          Hide
          Ashish Jain added a comment -

          I found that BasicRegistry.register is called to register the GBean Instance( value) with a Key. In this case I see that once the first
          application is deployed/started an entry is created in the registry as
          Key=geronimo:J2EEServer=geronimo,nodeName=NODEA Value=default/ClusterTestEAR_G_MASTER/1.0/ear?nodeName=NODEA

          On the deployment/start of the second application an entry is being created in the registry as
          Key=geronimo:J2EEServer=geronimo,nodeName=NODEA Value=default/CalculatorStateless_G_MASTER/1.0/ear?nodeName=NODEA
          As we can see geronimo tries to use the same keyname as the first deployment and hence the error GBean already registered.

          Show
          Ashish Jain added a comment - I found that BasicRegistry.register is called to register the GBean Instance( value) with a Key. In this case I see that once the first application is deployed/started an entry is created in the registry as Key=geronimo:J2EEServer=geronimo,nodeName=NODEA Value=default/ClusterTestEAR_G_MASTER/1.0/ear?nodeName=NODEA On the deployment/start of the second application an entry is being created in the registry as Key=geronimo:J2EEServer=geronimo,nodeName=NODEA Value=default/CalculatorStateless_G_MASTER/1.0/ear?nodeName=NODEA As we can see geronimo tries to use the same keyname as the first deployment and hence the error GBean already registered.
          Hide
          Amit Puri added a comment -

          yes, you are correct.

          I am attaching here all the logs in DEBUG Mode.

          Thanks

          Show
          Amit Puri added a comment - yes, you are correct. I am attaching here all the logs in DEBUG Mode. Thanks
          Hide
          Ashish Jain added a comment -

          Ahh so that seems to be a work around for this problem. So if I understand correctly this is how the scenario flows.

          1) Deploy an WAR to cluster it deploys fine.
          2) Deploy 2nd WAR and is say GBean already registered.
          3) Next you see an exception and none of the modules are started.
          4) Go to admin console for each of the nodes( i guess you are using 2 nodes) and do a manual start and both the apps start fine.

          Looks like geronimo is trying to register the same node again as it seems to be re registering node B.

          Can you please add the complete stack trace in debug mode to this jira???

          Thanks

          Show
          Ashish Jain added a comment - Ahh so that seems to be a work around for this problem. So if I understand correctly this is how the scenario flows. 1) Deploy an WAR to cluster it deploys fine. 2) Deploy 2nd WAR and is say GBean already registered. 3) Next you see an exception and none of the modules are started. 4) Go to admin console for each of the nodes( i guess you are using 2 nodes) and do a manual start and both the apps start fine. Looks like geronimo is trying to register the same node again as it seems to be re registering node B. Can you please add the complete stack trace in debug mode to this jira??? Thanks
          Hide
          Amit Puri added a comment -

          I am facing same problem in Geronimo 2.1.4 as well when I tried two war files.
          Here Application get deployed on all the cluster members but did not start because of this error(org.apache.geronimo.kernel.GBeanAlreadyExistsException: GBean already registered: geronimo:J2EEServer=geronimo,nodeName=NODE-B) When I started the second application from Admin console of individual server instances, it started fine without any exception.

          Show
          Amit Puri added a comment - I am facing same problem in Geronimo 2.1.4 as well when I tried two war files. Here Application get deployed on all the cluster members but did not start because of this error(org.apache.geronimo.kernel.GBeanAlreadyExistsException: GBean already registered: geronimo:J2EEServer=geronimo,nodeName=NODE-B) When I started the second application from Admin console of individual server instances, it started fine without any exception.

            People

            • Assignee:
              Ashish Jain
              Reporter:
              viola.lu
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development