Github user jasobrown commented on a diff in the pull request:
https://github.com/apache/cassandra/pull/184#discussion_r160495552
--- Diff: src/java/org/apache/cassandra/gms/Gossiper.java ---
@@ -1207,12 +1239,27 @@ private void applyNewStates(InetAddress addr,
EndpointState localState, Endpoint
assert remoteState.getHeartBeatState().getGeneration() ==
localState.getHeartBeatState().getGeneration();
localState.addApplicationStates(remoteStates);
- for (Entry<ApplicationState, VersionedValue> remoteEntry :
remoteStates)
+ //Filter out pre-4.0 versions of data for more complete 4.0
versions
+ Set<Entry<ApplicationState, VersionedValue>> filtered =
remoteStates.stream().filter(entry -> {
--- End diff --
I'm not sure this is wise.
a) by returning the alternate `WITH_PORT` variant, we will execute
`doOnChangeNotifications` twice for it. I'm not confident that the
`IEndpointStateChangeSubscriber` implementations (read: `StorageService`) will
be intelligently idempotent. If some block of logic happen to execute twice,
tracking down the effects could be miserable.
b) there may be `IEndpointStateChangeSubscriber` implementations (read:
DSE) that might not update correctly and still be expecting the old AppState to
work correctly. tbqh, I'm not really worried about this case.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]