Details
-
Bug
-
Status: Resolved
-
Low
-
Resolution: Duplicate
-
None
-
None
-
Low
Description
Followup to CASSANDRA-13713. To force the EchoResponse response onto the correct stage, we should create a new message type, EchoResponseMessage, and map it appropriately in MessagingService.verbStages. Mapping the response message correctly will allow the response to be sent on the gossip connection, and then allow us to process it immediately on the gossip stage, rather the request_response stage.
One serious problem to consider is the upgrade scenario, where the non-upgraded node expects a simple RequestResponse message that maps to a callback. If the upgraded node tries to send the new EchoResponseMessage, it will be ignored by the old node. And thus we get into some weird state where gossip can't communicate directly, even though the actual TCP connection and wrapper channel is setup correctly. (I haven't thought about all the oddball fall out that can occur as a rolling upgrade rolls out).
Thus, due to that complexity, versus the triviality/near-zero impact of the bug (sending the response on the wrong channel is not a big deal), I feel this ticket is largely not worth bothering with. That said, I at least want to capture the problem for posterity.