Details
-
Task
-
Resolution: Done
-
Major
-
3.5
-
None
Description
I'm thinking of deprecating the shared transport [1] and remove it in 4.0. The replacement would be fork channels [2].
Here's my reasoning:
- Shared transports are quite a complex beast: initialization (ref counting), cluster-name and local-addr are not used in TP when shared, duplicate logic. Removing this will make the code base smaller
- All protocols above shared transports are not shared, e.g. FD_SOCK, NAKACK, UNICAST etc all maintain their own threads, retransmission tables, sockets etc. With fork channels, everything up to the FORK protocol is shared
- TUNNEL doesn't work with shared transports (throws an exception)
- Hidden insertion of TP$ProtocolAdapter into the stack when shared transports are used
- Unneeded cost of sending N-1 messages (e.g. with TCP). Currently we send a message with dest null and no IP multicast capable transport to all physical addresses in the transport, which is a waste
Thoughts ? My +100 for removing shared transports in 4.0...
[1] http://www.jgroups.org/manual/html/user-advanced.html#SharedTransport
[2] http://www.jgroups.org/manual/html/user-advanced.html#ForkChannel