-
Bug
-
Resolution: Done
-
Major
-
2.10
-
None
MuxUpHandler needs to handle other events besides MSG and VIEW_CHANGE. Patch attached.
The tricky one's are state transfer related and BLOCK/UNBLOCK.
BLOCK/UNBLOCK is fairly straightforward, except a handler may be registered with the Channel after it is started. In that case, the handler needs to be passed the last BLOCK/UNBLOCK event so it's initial state is correct.
State transfer is more complex. I've got a solution based on a rule that if a bunch of components of a service want to share a channel via Mux(Message/Rpc)Dispatcher, then at most one can use full state transfer; the rest must use partial state transfer. Those that use partial state transfer can register an UpHandler with the Muxer that implements a new StateTranferFilter interface
boolean accepts(String state_id)
MuxUpHandler handles state transfer related events by iterating through the registered handlers, calling accepts(), passing the event to the one that returns true, with fallback logic if none accept. See patch I'll attach in a moment for further details.