Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-7765

Application deployed as "singleton-deployment" in a cluster is not reachable for EJB calls under all circumstances

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Major Major
    • None
    • None
    • EJB
    • None
    • Hide

      Use the example:
      https://github.com/wfink/jboss-eap-playground/tree/master/eap7ClusterHASingletonDeployment

      The client try to invoke the node without port-offset. If the nodes are started in different order, or the node1 is brought down during runtime the EJB invocations are failing.

      Show
      Use the example: https://github.com/wfink/jboss-eap-playground/tree/master/eap7ClusterHASingletonDeployment The client try to invoke the node without port-offset. If the nodes are started in different order, or the node1 is brought down during runtime the EJB invocations are failing.
    • Hide

      To have a failover more than one node need to be added to the client onfiguration.
      Theese nodes need to be listed in the singleton subsystem which ensure that one of theese nodes is elected for the ha-singleton deployment.

      The following XML part need to be adjusted within the standalone or domain (HA) configuration:
      <subsystem xmlns="urn:jboss:domain:singleton:1.0">
      <singleton-policies default="default">
      <singleton-policy name="default" cache-container="server">
      <simple-election-policy>
      <name-preferences>yournode1 yournode2 yournode3</name-preferences>
      </simple-election-policy>
      </singleton-policy>
      </singleton-policies>
      </subsystem>

      The nodes must be added to the client properties file or the programatic selector setting.

      Show
      To have a failover more than one node need to be added to the client onfiguration. Theese nodes need to be listed in the singleton subsystem which ensure that one of theese nodes is elected for the ha-singleton deployment. The following XML part need to be adjusted within the standalone or domain (HA) configuration: <subsystem xmlns="urn:jboss:domain:singleton:1.0"> <singleton-policies default="default"> <singleton-policy name="default" cache-container="server"> <simple-election-policy> <name-preferences>yournode1 yournode2 yournode3</name-preferences> </simple-election-policy> </singleton-policy> </singleton-policies> </subsystem> The nodes must be added to the client properties file or the programatic selector setting.

      If an application (singleton-deployment) is deployed into a cluster with more nodes than are initial in the list of the client it can happen that a node is elected to run this application which is not know initially by the client,
      or
      the node with the singleton application is shutted down or crash during runtime.

      In any case the EJB invocation will not work if a node is elected to run the deployment which is not part of the servers listed as initial connections at client side.

      With some BYTEMAN rules I checked that the client side ClusterTopologyMessageHandler and ClusterNodeRemovalHandler did not see more than the node which have the application deployed.
      If all nodes are added to the client jboss-ejb-client.properties the DeploymentNodeSelector is used for the first invocation, the cluster-view is received with one node.
      After this node is down the DNS will show another node and the cluster-view received afterwards onyl show this node.

              Unassigned Unassigned
              rhn-support-wfink Wolf Fink
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: