In order to process cluster topology updates, ClusterContext has a method called addClusterNodes(ClusterNodeManager ...) which is used to add ClusterNodeManagers to the ClusterContext. Each added ClusterNodeManager represents a cluster node and an EJBReceiver which can be used to connect to it.
Because of the fact that, for every change in the cluster topology, a client may receive multiple cluster topology updates (one from each surviving member), the ClusterContext will receive multiple addition requests for the same nodes.
ClusterContext.addClusterNodes(ClusterNodeManager ...) does not check whether a node is currently managed or not before updating the managedNodes map, which maps nodes to their ClusterNodeManager instances. This overwriting of map entries is unnecessary and probably creates problems downstream.