Details
-
Bug
-
Resolution: Done
-
Major
-
2.2.8
-
None
Description
When a joiner P requests the state from coordinator C, then 2 use cases are not handled:
#1 P crashes while the state transfer is in progress
#2 C crashes while the state transfer is in progress
#2 is similar to the client JOIN, where the JOIN is redirected to the new coordinator. However, this is not done for state transfer.
In this case, P probably continues to wait for the state forever. We need to either return from Channel.getState() with an exception, or redirect the state request to the new coordinator
#1 causes C to continue sending the state (via UNICAST and retransmits) to P. Solution would be to handle view changes, and simply terminate the state transfer to P when P crashed