-
Bug
-
Resolution: Done
-
Major
-
10.0.0.Beta2
-
None
The JGroupsTransport employed by the DistributedWorkManager uses synchronous multicasting via the RpcDispatcher. Since the JCA default configuration was modified to use fork channels, we need to ensure that it handles an exception case specific for fork channels, i.e. the case where a message is received by a node on which no such DWM exists.
As I see it, there are 2 ways we can fix this:
- Configure the RpcDispatcher with a custom response marshaller capable of recognizing unknown fork responses
- Implement a transport that leverages CommandDispatcher, which already handles this exception case.
#1 is the easiest. The only hiccup is that the RpcDispatcher field in JGroupsTransport is private, which requires reflection to access from a subclass.
#2 is probably the ideal long term solution. The DistributedWorkManager already employs a command pattern, so using CommandDispatcher is a natural fit. Using the CommandDispatcher will also simplifies marshalling/unmarshalling of the transport parameters. Additionally, using the public clustering API allows us to remove the direct dependency on org.jgroups module from the connector subsystems. The only hiccup here is that in order to optimize the marshalling of the command objects, requires the use of the marshalling API introduced as part of WFLY-5091, which, at the time of this writing, has not yet been merged into WF master.
Given the above, I suggest a 2 phase solution, where we implement #1 for now, and #2 when the missing pieces are in place.
- is blocked by
-
WFLY-5191 IronJacamar 1.2.6.Final
- Closed
- relates to
-
JBJCA-1289 Expose RpcDispatcher in JGroupsTransport
- Closed