[
https://issues.jboss.org/browse/WFLY-3711?page=com.atlassian.jira.plugin....
]
Richard Achmatowicz commented on WFLY-3711:
-------------------------------------------
As mentioned earlier, the method RegistryCollector.registryRemoved() has its action
commented out as removing a registry from the registry collector merely indicates that the
node on which the RegistryCollector service is running has left the cluster,not that the
cluster has zero members. We only want this method to be called when the last member
leaves the cluster. This state of affairs should be true when the condition
{noformat}
registry.getEntries().keySet().size() == 1
{noformat}
is true during the call to registryRemoved. In other words, we know that the current node
is leaving a cluster, and that the membership of the cluster being left is 1. So we are
the last member. This, with this condition in place, the call to sendClusterRemoved can be
reinstated and the cluster contexts cleaned up on the client.
Topology updates of EJBClient ClusterContexts not being processed
correctly after failover
------------------------------------------------------------------------------------------
Key: WFLY-3711
URL:
https://issues.jboss.org/browse/WFLY-3711
Project: WildFly
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Clustering
Affects Versions: 9.0.0.Beta1
Reporter: Richard Achmatowicz
Assignee: Richard Achmatowicz
ClusterContexts are used by EJBClient to keep track of the current set of nodes in a
cluster, so that if an EJBClient invocation fails on one node, it may failover to another
node in the same cluster. The ClusterContext is made up of ClusterNodeManagers which are
responsible for setting up the connections between the EJBClient and the nodes in the
cluster.
Cluster topology updates are sent to registered EJBClients whenever the cluster topology
changes (nodes join, nodes leave a cluster). Thse topology updates are processed on the
client side by ClusterTopologyUpdateHandler and are used to update the current contents of
the associated ClusterContext held on the client.
The current implementation of the handling of topology updates does not correctly handle
the addition/removal of ClusterNodeManagers from the cluster context - namely, rather than
check whether or not a new ClusterNodeManager really needs to be added,
ClusterNodeManagers are added for every node in the received topology update, leading to
many unnecessary EJBReceivers and their channels being created.
The logs show that up to 18 cluster node manager instances may be created, have their
EJBReceivers registered and channels to the remote node created, when only one node has
been added to the cluster.
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)