This is an automated email from the ASF dual-hosted git repository. bereng pushed a commit to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git
commit 3e2e4c3ea15f0b4bcab6318f859e5194556c4f0e Merge: ec00426584 fcea0b6fd8 Author: Bereng <berenguerbl...@gmail.com> AuthorDate: Mon Apr 14 09:20:52 2025 +0200 Merge branch 'cassandra-4.0' into cassandra-4.1 * cassandra-4.0: CASSANDRA-19633 Replaced node is stuck in a loop calculating ranges .../config/CassandraRelevantProperties.java | 9 ++- .../org/apache/cassandra/dht/RangeStreamer.java | 9 ++- .../org/apache/cassandra/dht/BootStrapperTest.java | 86 ++++++++++++++++++---- 3 files changed, 84 insertions(+), 20 deletions(-) diff --cc test/unit/org/apache/cassandra/dht/BootStrapperTest.java index f23e50521a,4b2a56a2d2..8f766015f7 --- a/test/unit/org/apache/cassandra/dht/BootStrapperTest.java +++ b/test/unit/org/apache/cassandra/dht/BootStrapperTest.java @@@ -83,6 -105,52 +105,52 @@@ public class BootStrapperTes } } + @Test + @BMRules(rules = { @BMRule(name = "Make sure the non-optimized path is picked up for some operations", + targetClass = "org.apache.cassandra.dht.RangeStreamer", + targetMethod = "convertPreferredEndpointsToWorkMap(EndpointsByReplica)", + action = "org.apache.cassandra.dht.BootStrapperTest.nonOptimizationHit.set(true)"), + @BMRule(name = "Make sure the optimized path is picked up for some operations", + targetClass = "org.apache.cassandra.dht.RangeStreamer", + targetMethod = "getOptimizedWorkMap(EndpointsByReplica,Collection,String)", + action = "org.apache.cassandra.dht.BootStrapperTest.optimizationHit.set(true)") }) + public void testStreamingCandidatesOptmizationSkip() throws UnknownHostException + { + testSkipStreamingCandidatesOptmizationFeatureFlag(true, true, false); + testSkipStreamingCandidatesOptmizationFeatureFlag(false, true, true); + } + + private void testSkipStreamingCandidatesOptmizationFeatureFlag(boolean disableOptimization, boolean nonOptimizedPathHit, boolean optimizedPathHit) throws UnknownHostException + { + try + { + nonOptimizationHit.set(false); + optimizationHit.set(false); + CassandraRelevantProperties.SKIP_OPTIMAL_STREAMING_CANDIDATES_CALCULATION.setBoolean(disableOptimization); + - for (String keyspaceName : Schema.instance.getNonLocalStrategyKeyspaces()) ++ for (String keyspaceName : Schema.instance.getUserKeyspaces()) + { + StorageService ss = StorageService.instance; + TokenMetadata tmd = ss.getTokenMetadata(); + + generateFakeEndpoints(10); + Token myToken = tmd.partitioner.getRandomToken(); + InetAddressAndPort myEndpoint = InetAddressAndPort.getByName("127.0.0.1"); + + assertEquals(10, tmd.sortedTokens().size()); + RangeStreamer s = new RangeStreamer(tmd, null, myEndpoint, StreamOperation.BOOTSTRAP, true, DatabaseDescriptor.getEndpointSnitch(), new StreamStateStore(), mockFailureDetector, false, 1); + s.addRanges(keyspaceName, Keyspace.open(keyspaceName).getReplicationStrategy().getPendingAddressRanges(tmd, myToken, myEndpoint)); + } + + assertEquals(nonOptimizedPathHit, nonOptimizationHit.get()); + assertEquals(optimizedPathHit, optimizationHit.get()); + } + finally + { + CassandraRelevantProperties.SKIP_OPTIMAL_STREAMING_CANDIDATES_CALCULATION.reset(); + } + } + private RangeStreamer testSourceTargetComputation(String keyspaceName, int numOldNodes, int replicationFactor) throws UnknownHostException { StorageService ss = StorageService.instance; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org