Hi,
We've seen this issue in some production systems and I've been asked to
raise this to the list for visibility.
The main idea[1] is to propagate partitioner and cluster name through
Gossip and validate these. The approach I took is to Json encode those
in a generic JSON_PAYLOAD new AppState but I lack the historical context
as to why enum ordinals were used in the first place: Imo Json encoding
going forward:
- Prevents burning extra AppStates
- Prevents forks with custom AppStates on online rolling upgrades to OSS
conflict on the mapping (scary)
- Friendlier to being extended, customized and more robust towards
modifications
Options:
A. Introduce this new generic state (4-0 -> trunk) and we use this onward
B. Drop the idea of a generic json AppState and just add one new
AppState for this ticket 4.0->5.0 as this is not an issue in trunk due
to TCM. This one de-risks the upcoming trunk release and could be
repurposed in the future to become A if we chose so.
Thoughts welcomed, thanks in advance.
[1] https://issues.apache.org/jira/browse/CASSANDRA-20910