In the process of performing an invocation on a EJB, the EJB client invocation mechanism needs to make a choice of which node to send the invocation to. The choice is constrained by the following factors:
- which nodes have the module containing the bean deployed
- any strong affinity that the invocation should respect (i.e. is the invocation tied to a specific node, or a specific cluster)
- any weak affinity that the invocation should respect (i.e. if the invocation is tied to a cluster, should it be directed to a specific node within that cluster)
In order to choose the target node, the invocation mechanism searches through the current list of information that it has about module deployments, nodes, clusters and their memberships, to find a node that meets the affinity constraints of the invocation. The current list of information changes over time, via connections to nodes being opened by the client and module and topology updates being received from nodes and clusters.
Consequently, debugging invocation problems is a complicated business. We need to be able to enable trace logging on the components that are involved in making this invocation choice, including:
- module and topology updates and the ServiceURLs created
- control flow paths in performLocatedAction when an invocation is made
- proxy affinity information
- results of calls to discovery
Having this information will allow us to see what is going on when problems do arise and lead to faster problem resolution.