jyothsnakonisa commented on code in PR #299:
URL: https://github.com/apache/cassandra-sidecar/pull/299#discussion_r2625140758
##########
server/src/test/java/org/apache/cassandra/sidecar/handlers/cdc/StreamCdcSegmentHandlerTest.java:
##########
@@ -268,7 +283,7 @@ private void spinAssertCdcRawTempEmpty()
File cdcTempDir = new File(CDC_RAW_TEMP_DIR);
assertThat(cdcTempDir.exists()).isTrue();
- int attempts = 10;
+ int attempts = 20;
Review Comment:
I am assuming that you are increasing attempts, to surface the flakiness
##########
server/src/test/integration/org/apache/cassandra/testing/CassandraTestTemplate.java:
##########
@@ -426,7 +439,7 @@ private static boolean portNotAvailableToBind(Throwable
cause)
static
{
System.setProperty("cassandra.ring_delay_ms", "5000"); // down from
30s default; this change has no effect if GOSSIP feature is enabled
- System.setProperty("cassandra.consistent.rangemovement", "false");
+// System.setProperty("cassandra.consistent.rangemovement", "false");
Review Comment:
Commented code
##########
server/src/test/integration/org/apache/cassandra/sidecar/testing/bytebuddy/BBHelperMovingNode.java:
##########
@@ -49,15 +50,48 @@ public static void install(ClassLoader cl, int nodeNumber,
int movingNodeIndex)
if (nodeNumber == movingNodeIndex)
{
TypePool typePool = TypePool.Default.of(cl);
- TypeDescription description =
typePool.describe("org.apache.cassandra.service.RangeRelocator")
- .resolve();
- new ByteBuddy().rebase(description,
ClassFileLocator.ForClassLoader.of(cl))
- .method(named("stream"))
+
+ if (installTcm(cl, typePool)) {
Review Comment:
curly bracket in the next line? I noticed a few in other places too. Can you
please reformat them according to the coding conventions of this repo?
##########
server/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/JoiningTestMultiDCSingleReplicated.java:
##########
@@ -87,63 +98,51 @@ void
retrieveMappingsSingleDCReplicatedKeyspace(VertxTestContext context,
* Range 2 - B, C, D (with E being the joining node)
* Expected Range 2 - B, C, D, E
*/
- private HashMap<String, Map<Range<BigInteger>, List<String>>>
generateExpectedRangeMappingOneof2DCs()
+ private Map<String, Map<Range<BigInteger>, List<String>>>
generateExpectedRangeMappingOneof2DCs(TokenSupplier tokenSupplier,
CassandraIntegrationTest annotation)
{
+ List<Range<BigInteger>> expectedRanges = generateExpectedRanges(false,
tokenSupplier, annotation);
+ Map<Range<BigInteger>, List<String>> dc1Mapping = new HashMap<>();
+
+ // Range 1
+ dc1Mapping.put(expectedRanges.get(0), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+
+ // Range 2 (write survey range)
+ dc1Mapping.put(expectedRanges.get(1), Arrays.asList("127.0.0.5",
"127.0.0.7", "127.0.0.11", "127.0.0.3"));
+
+ // Range 3
+ dc1Mapping.put(expectedRanges.get(2), Arrays.asList("127.0.0.5",
"127.0.0.7", "127.0.0.11", "127.0.0.3"));
+
+ // Range 4 (write survey range)
+ dc1Mapping.put(expectedRanges.get(3), Arrays.asList("127.0.0.5",
"127.0.0.7", "127.0.0.9", "127.0.0.11"));
+
+ // Range 5
+ dc1Mapping.put(expectedRanges.get(4), Arrays.asList("127.0.0.5",
"127.0.0.7", "127.0.0.9", "127.0.0.11"));
+
+ // Range 6 (write survey range)
+ dc1Mapping.put(expectedRanges.get(5), Arrays.asList("127.0.0.7",
"127.0.0.9", "127.0.0.11", "127.0.0.1"));
+
+ // Range 7
+ dc1Mapping.put(expectedRanges.get(6), Arrays.asList("127.0.0.7",
"127.0.0.9", "127.0.0.1"));
+
+ // Range 8 (write survey range)
+ dc1Mapping.put(expectedRanges.get(7), Arrays.asList("127.0.0.9",
"127.0.0.1", "127.0.0.3"));
- /*
- * Initial Ranges:
- * [-9223372036854775808, -5869418568907584607]=[127.0.0.1:52914,
127.0.0.3:52916, 127.0.0.5:52918]
- * [-5869418568907584607, -5869418568907584606]=[127.0.0.3:52916,
127.0.0.5:52918, 127.0.0.7:52920]
- * [-5869418568907584606, -2515465100960393407]=[127.0.0.3:52918,
127.0.0.5:52920, 127.0.0.7:52922]
- * [-2515465100960393407, -2515465100960393406]=[127.0.0.5:52918,
127.0.0.7:52920, 127.0.0.9:52922]
- * [-2515465100960393406, 838488366986797793]=[127.0.0.5:52918,
127.0.0.7:52920, 127.0.0.9:52922]
- * [838488366986797793, 838488366986797794]=[127.0.0.7:52920,
127.0.0.9:52922, 127.0.0.1:52914]
- * [838488366986797794, 4192441834933988993]=[127.0.0.7:52920,
127.0.0.9:52922, 127.0.0.1:52914]
- * [4192441834933988993, 4192441834933988994]=[127.0.0.9:52922,
127.0.0.1:52914, 127.0.0.3:52916]
- * [4192441834933988994, 7546395302881180193]=[127.0.0.9:52922,
127.0.0.1:52914, 127.0.0.3:52916]
- * [7546395302881180193, 7546395302881180194]=[127.0.0.1:52914,
127.0.0.3:52916, 127.0.0.5:52918]
- * [7546395302881180194, 9223372036854775807]=[127.0.0.1:52914,
127.0.0.3:52916, 127.0.0.5:52918]
- *
- * Pending Ranges:
- * [-5869418568907584607, -5869418568907584606]=[127.0.0.11:58400]
- * [-5869418568907584606, -4192441834933989006]=[127.0.0.11:58400]
- * [4192441834933988993, 4192441834933988994]=[127.0.0.11:58400]
- * [7546395302881180194, -5869418568907584607]=[127.0.0.11:58400]
(wrap-around)
- * [7546395302881180193, 7546395302881180194]=[127.0.0.11:58400]
- * [4192441834933988994, 7546395302881180193]=[127.0.0.11:58400]
- *
- */
- List<Range<BigInteger>> expectedRanges = generateExpectedRanges(false);
- Map<Range<BigInteger>, List<String>> mapping = new HashMap<>();
- // [-9223372036854775808, -5869418568907584607]
- mapping.put(expectedRanges.get(0), Arrays.asList("127.0.0.1",
"127.0.0.3", "127.0.0.5", "127.0.0.11"));
- // [-5869418568907584607, -5869418568907584606]
- mapping.put(expectedRanges.get(1), Arrays.asList("127.0.0.3",
"127.0.0.5", "127.0.0.7", "127.0.0.11"));
- // [-5869418568907584606, -4192441834933989006]
- mapping.put(expectedRanges.get(2), Arrays.asList("127.0.0.3",
"127.0.0.5", "127.0.0.7", "127.0.0.11"));
- // [-4192441834933989006, -2515465100960393407]
- mapping.put(expectedRanges.get(3), Arrays.asList("127.0.0.3",
"127.0.0.5", "127.0.0.7"));
- // [-2515465100960393407, -2515465100960393406]
- mapping.put(expectedRanges.get(4), Arrays.asList("127.0.0.5",
"127.0.0.7", "127.0.0.9"));
- // [-2515465100960393406, 838488366986797793]
- mapping.put(expectedRanges.get(5), Arrays.asList("127.0.0.5",
"127.0.0.7", "127.0.0.9"));
- // [838488366986797793, 838488366986797794]
- mapping.put(expectedRanges.get(6), Arrays.asList("127.0.0.7",
"127.0.0.9", "127.0.0.1"));
- // [838488366986797794, 4192441834933988993]
- mapping.put(expectedRanges.get(7), Arrays.asList("127.0.0.7",
"127.0.0.9", "127.0.0.1"));
- // [4192441834933988993, 4192441834933988994]
- mapping.put(expectedRanges.get(8), Arrays.asList("127.0.0.9",
"127.0.0.1", "127.0.0.3", "127.0.0.11"));
- // [4192441834933988994, 7546395302881180193]
- mapping.put(expectedRanges.get(9), Arrays.asList("127.0.0.9",
"127.0.0.1", "127.0.0.3", "127.0.0.11"));
- // [7546395302881180193, 7546395302881180194]
- mapping.put(expectedRanges.get(10), Arrays.asList("127.0.0.1",
"127.0.0.3", "127.0.0.5", "127.0.0.11"));
- // [7546395302881180194, 9223372036854775807]
- mapping.put(expectedRanges.get(11), Arrays.asList("127.0.0.1",
"127.0.0.3", "127.0.0.5", "127.0.0.11"));
-
- return new HashMap<String, Map<Range<BigInteger>, List<String>>>()
+ // Range 9
+ dc1Mapping.put(expectedRanges.get(8), Arrays.asList("127.0.0.9",
"127.0.0.1", "127.0.0.3"));
+
+ // Range 10 (write survey range)
+ dc1Mapping.put(expectedRanges.get(9), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+
+ // Range 11
+ dc1Mapping.put(expectedRanges.get(10), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+
+ // Range 12
+ dc1Mapping.put(expectedRanges.get(11), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+
+ return new HashMap<>()
Review Comment:
```suggestion
return Map.of("datacenter1", dc1Mapping);
```
##########
client-common/src/main/java/org/apache/cassandra/sidecar/common/utils/StringUtils.java:
##########
@@ -46,4 +48,12 @@ public static boolean isNotEmpty(@Nullable String string)
{
return !isNullOrEmpty(string);
}
+
+ public static boolean contains(@NotNull String string, @NotNull String
target) {
Review Comment:
I do not see a reason why we should have the StringUtils class.
For all other methods in this class can be removed and Guava StringUtils
could be used, for this method can use `String.contains()` since the strings
are not null.
If you think that the strings could be null, then there is a mismatch in the
annotation for parameters
##########
server/src/test/integration/org/apache/cassandra/sidecar/testing/BootstrapBBUtils.java:
##########
@@ -19,12 +19,12 @@
package org.apache.cassandra.sidecar.testing;
import net.bytebuddy.ByteBuddy;
-import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.dynamic.ClassFileLocator;
import net.bytebuddy.dynamic.TypeResolutionStrategy;
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.pool.TypePool;
+import org.apache.cassandra.distributed.api.IInvokableInstance;
Review Comment:
Unused import
##########
server/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/LeavingTest.java:
##########
@@ -34,14 +34,7 @@
Review Comment:
`generateExpectedRangeMappingHalveClusterSize()` method is unused in this
class and can be removed
##########
server/src/test/integration/org/apache/cassandra/sidecar/testing/TestTokenSupplier.java:
##########
@@ -118,4 +125,21 @@ private static List<String>[]
allocateExistingNodeTokens(int numNodesPerDC,
}
return tokens;
}
+
+ public void swap(int i, int j)
+ {
+ List<String> tmp = tokens[i];
+ tokens[i] = tokens[j];
+ tokens[j] = tmp;
+ }
+
+ public Collection<String> tokens(int nodeId)
+ {
+ return tokens[nodeId - 1];
+ }
+
+ public void dup(int src, int dst)
Review Comment:
May be rename it to copyTokens?
##########
server/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/JoiningTestMultiDCSingleReplicated.java:
##########
@@ -158,14 +157,15 @@ public static class BBHelperMultiDC
public static void install(ClassLoader cl, Integer nodeNumber)
{
- // Test case involves adding 2 nodes to a 10 node cluster (5 per
DC)
- // We intercept the bootstrap of nodes (11,12) to validate token
ranges
+ // Test case involves adding 2 nodes to a 12 node cluster (5 per
DC)
Review Comment:
```suggestion
// Test case involves adding 2 nodes to a 10 node cluster (5 per
DC)
```
This comment is copied in several places, please correct it everywhere
##########
server/src/test/integration/org/apache/cassandra/sidecar/testing/bytebuddy/BBHelperMovingNode.java:
##########
@@ -29,6 +29,7 @@
import net.bytebuddy.dynamic.TypeResolutionStrategy;
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
import net.bytebuddy.implementation.MethodDelegation;
+import net.bytebuddy.implementation.bind.annotation.RuntimeType;
import net.bytebuddy.implementation.bind.annotation.SuperCall;
import net.bytebuddy.pool.TypePool;
Review Comment:
Please remove unused imports.
##########
server/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/LeavingTestMultiDC.java:
##########
@@ -94,59 +92,69 @@ void
retrieveMappingWithLeavingNodesMultiDC(VertxTestContext context,
* Range 1 - A, B, C
* Range 2 - B, C, D (with D being the leaving node)
* Expected Range 2 - B, C, D, A (With A taking over the range of the
leaving node)
+ * <p>
+ * Note: Cassandra now returns token boundaries as separate single-token
ranges, so the total
+ * number of ranges is 13 (6 regular ranges + 6 token boundary ranges + 1
wraparound).
*/
- private Map<String, Map<Range<BigInteger>, List<String>>>
generateExpectedRangeMappingLeavingNodeMultiDC()
+ private Map<String, Map<Range<BigInteger>, List<String>>>
generateExpectedRangeMappingLeavingNodeMultiDC(TokenSupplier tokenSupplier,
CassandraIntegrationTest annotation)
{
- List<Range<BigInteger>> expectedRanges = generateExpectedRanges();
+ List<Range<BigInteger>> expectedRanges = generateExpectedRanges(true,
tokenSupplier, annotation);
Map<Range<BigInteger>, List<String>> dc1Mapping = new HashMap<>();
Map<Range<BigInteger>, List<String>> dc2Mapping = new HashMap<>();
- dc1Mapping.put(expectedRanges.get(0), Arrays.asList("127.0.0.1",
"127.0.0.3", "127.0.0.5"));
- dc2Mapping.put(expectedRanges.get(0), Arrays.asList("127.0.0.2",
"127.0.0.4", "127.0.0.6"));
+ // Range 0: (-9223372036854775808, -6588122883467697007]
+ dc1Mapping.put(expectedRanges.get(0), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+ dc2Mapping.put(expectedRanges.get(0), Arrays.asList("127.0.0.4",
"127.0.0.2", "127.0.0.8"));
- dc1Mapping.put(expectedRanges.get(1), Arrays.asList("127.0.0.3",
"127.0.0.5", "127.0.0.7"));
- dc2Mapping.put(expectedRanges.get(1), Arrays.asList("127.0.0.2",
"127.0.0.4", "127.0.0.6"));
+ // Range 1: (-6588122883467697007, -6588122883467697006]
+ dc1Mapping.put(expectedRanges.get(1), Arrays.asList("127.0.0.5",
"127.0.0.11", "127.0.0.3", "127.0.0.7"));
+ dc2Mapping.put(expectedRanges.get(1), Arrays.asList("127.0.0.4",
"127.0.0.2", "127.0.0.8"));
- dc1Mapping.put(expectedRanges.get(2), Arrays.asList("127.0.0.3",
"127.0.0.5", "127.0.0.7"));
- dc2Mapping.put(expectedRanges.get(2), Arrays.asList("127.0.0.4",
"127.0.0.6", "127.0.0.8"));
+ // Range 2: (-6588122883467697006, -3952873730080618207]
+ dc1Mapping.put(expectedRanges.get(2), Arrays.asList("127.0.0.5",
"127.0.0.11", "127.0.0.3", "127.0.0.7"));
+ dc2Mapping.put(expectedRanges.get(2), Arrays.asList("127.0.0.10",
"127.0.0.4", "127.0.0.8"));
- dc1Mapping.put(expectedRanges.get(3),
- Arrays.asList("127.0.0.5", "127.0.0.7", "127.0.0.9",
"127.0.0.1"));
- dc2Mapping.put(expectedRanges.get(3), Arrays.asList("127.0.0.4",
"127.0.0.6", "127.0.0.8"));
+ // Range 3: (-3952873730080618207, -3952873730080618206]
+ dc1Mapping.put(expectedRanges.get(3), Arrays.asList("127.0.0.5",
"127.0.0.9", "127.0.0.11", "127.0.0.7"));
+ dc2Mapping.put(expectedRanges.get(3), Arrays.asList("127.0.0.10",
"127.0.0.4", "127.0.0.8"));
- dc1Mapping.put(expectedRanges.get(4),
- Arrays.asList("127.0.0.5", "127.0.0.7", "127.0.0.9",
"127.0.0.1"));
- dc2Mapping.put(expectedRanges.get(4),
- Arrays.asList("127.0.0.6", "127.0.0.8", "127.0.0.10",
"127.0.0.2"));
+ // Range 4: (-3952873730080618206, -1317624576693539407]
+ dc1Mapping.put(expectedRanges.get(4), Arrays.asList("127.0.0.5",
"127.0.0.9", "127.0.0.11", "127.0.0.7"));
+ dc2Mapping.put(expectedRanges.get(4), Arrays.asList("127.0.0.10",
"127.0.0.6", "127.0.0.8"));
- dc1Mapping.put(expectedRanges.get(5),
- Arrays.asList("127.0.0.7", "127.0.0.9", "127.0.0.1",
"127.0.0.3"));
- dc2Mapping.put(expectedRanges.get(5),
- Arrays.asList("127.0.0.6", "127.0.0.8", "127.0.0.10",
"127.0.0.2"));
+ // Range 5: (-1317624576693539407, -1317624576693539406]
+ dc1Mapping.put(expectedRanges.get(5), Arrays.asList("127.0.0.9",
"127.0.0.1", "127.0.0.11", "127.0.0.7"));
+ dc2Mapping.put(expectedRanges.get(5), Arrays.asList("127.0.0.10",
"127.0.0.6", "127.0.0.8"));
- dc1Mapping.put(expectedRanges.get(6),
- Arrays.asList("127.0.0.7", "127.0.0.9", "127.0.0.1",
"127.0.0.3"));
- dc2Mapping.put(expectedRanges.get(6),
- Arrays.asList("127.0.0.8", "127.0.0.10", "127.0.0.2",
"127.0.0.4"));
+ // Range 6: (-1317624576693539406, 1317624576693539393]
+ dc1Mapping.put(expectedRanges.get(6), Arrays.asList("127.0.0.9",
"127.0.0.1", "127.0.0.7"));
+ dc2Mapping.put(expectedRanges.get(6), Arrays.asList("127.0.0.10",
"127.0.0.6", "127.0.0.8"));
- dc1Mapping.put(expectedRanges.get(7),
- Arrays.asList("127.0.0.9", "127.0.0.1", "127.0.0.3",
"127.0.0.5"));
- dc2Mapping.put(expectedRanges.get(7),
- Arrays.asList("127.0.0.8", "127.0.0.10", "127.0.0.2",
"127.0.0.4"));
+ // Range 7: (1317624576693539393, 1317624576693539394]
+ dc1Mapping.put(expectedRanges.get(7), Arrays.asList("127.0.0.9",
"127.0.0.1", "127.0.0.3"));
+ dc2Mapping.put(expectedRanges.get(7), Arrays.asList("127.0.0.10",
"127.0.0.6", "127.0.0.8"));
- dc1Mapping.put(expectedRanges.get(8),
- Arrays.asList("127.0.0.9", "127.0.0.1", "127.0.0.3",
"127.0.0.5"));
- dc2Mapping.put(expectedRanges.get(8),
- Arrays.asList("127.0.0.10", "127.0.0.2", "127.0.0.4",
"127.0.0.6"));
+ // Range 8: (1317624576693539394, 3952873730080618193]
+ dc1Mapping.put(expectedRanges.get(8), Arrays.asList("127.0.0.9",
"127.0.0.1", "127.0.0.3"));
+ dc2Mapping.put(expectedRanges.get(8), Arrays.asList("127.0.0.10",
"127.0.0.12", "127.0.0.6", "127.0.0.2"));
- dc1Mapping.put(expectedRanges.get(9), Arrays.asList("127.0.0.1",
"127.0.0.3", "127.0.0.5"));
- dc2Mapping.put(expectedRanges.get(9),
- Arrays.asList("127.0.0.10", "127.0.0.2", "127.0.0.4",
"127.0.0.6"));
+ // Range 9: (3952873730080618193, 3952873730080618194]
+ dc1Mapping.put(expectedRanges.get(9), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+ dc2Mapping.put(expectedRanges.get(9), Arrays.asList("127.0.0.10",
"127.0.0.12", "127.0.0.6", "127.0.0.2"));
- dc1Mapping.put(expectedRanges.get(10), Arrays.asList("127.0.0.1",
"127.0.0.3", "127.0.0.5"));
- dc2Mapping.put(expectedRanges.get(10), Arrays.asList("127.0.0.2",
"127.0.0.4", "127.0.0.6"));
+ // Range 10: (3952873730080618194, 6588122883467696993]
+ dc1Mapping.put(expectedRanges.get(10), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+ dc2Mapping.put(expectedRanges.get(10), Arrays.asList("127.0.0.4",
"127.0.0.12", "127.0.0.6", "127.0.0.2"));
- return new HashMap<String, Map<Range<BigInteger>, List<String>>>()
+ // Range 11: (6588122883467696993, 6588122883467696994]
+ dc1Mapping.put(expectedRanges.get(11), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+ dc2Mapping.put(expectedRanges.get(11), Arrays.asList("127.0.0.4",
"127.0.0.12", "127.0.0.2", "127.0.0.8"));
+
+ // Range 12: (6588122883467696994, 9223372036854775807]
+ dc1Mapping.put(expectedRanges.get(12), Arrays.asList("127.0.0.5",
"127.0.0.1", "127.0.0.3"));
+ dc2Mapping.put(expectedRanges.get(12), Arrays.asList("127.0.0.4",
"127.0.0.2", "127.0.0.8"));
+
+ return new HashMap<>()
{
{
put("datacenter1", dc1Mapping);
Review Comment:
```suggestion
return Map.of("datacenter1", dc1Mapping,
"datacenter2", dc2Mapping);
```
##########
server/src/test/integration/org/apache/cassandra/sidecar/testing/BootstrapBBUtils.java:
##########
@@ -44,13 +44,44 @@ public class BootstrapBBUtils
public static void installFinishJoiningRingInterceptor(ClassLoader cl,
Class<?> interceptor)
{
TypePool typePool = TypePool.Default.of(cl);
- TypeDescription description =
typePool.describe("org.apache.cassandra.service.StorageService")
- .resolve();
- new ByteBuddy().rebase(description,
ClassFileLocator.ForClassLoader.of(cl))
+ if (installTcm(cl, typePool, interceptor) || installPreTcm(cl,
typePool, interceptor))
+ {
+ return;
+ }
+ throw new RuntimeException("Could not intercept node move");
Review Comment:
```suggestion
throw new RuntimeException("Could not intercept bootstrap");
```
##########
server/src/test/integration/org/apache/cassandra/sidecar/testing/bytebuddy/BBHelperJoiningNode.java:
##########
@@ -23,7 +23,8 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import net.bytebuddy.implementation.bind.annotation.SuperCall;
+import net.bytebuddy.implementation.bind.annotation.*;
+// import net.bytebuddy.implementation.bind.annotation.SuperCall;
Review Comment:
Please remove the commented import
##########
server/src/test/integration/org/apache/cassandra/sidecar/testing/bytebuddy/BBHelperJoiningNode.java:
##########
@@ -45,6 +46,7 @@ public static void install(ClassLoader cl, int nodeNumber,
int joiningNodeIndex)
}
}
+ @SuppressWarnings("unused")
Review Comment:
how about adding private constructor for the utils class? few other helper
classes also have this missing can you please update everywhere
##########
server/src/test/integration/org/apache/cassandra/sidecar/testing/TestTokenSupplier.java:
##########
@@ -20,17 +20,21 @@
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.apache.cassandra.distributed.api.TokenSupplier;
+import org.jetbrains.annotations.NotNull;
Review Comment:
Unused import
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]