This is an automated email from the ASF dual-hosted git repository.

jkonisa pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-sidecar.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 66e668fa CASSSIDECAR-411: RangeManager should be singleton in 
CDCModule (#323)
66e668fa is described below

commit 66e668faebc98b6bce20d83e9d421f07d378dedd
Author: Jyothsna konisa <[email protected]>
AuthorDate: Mon Feb 23 10:51:20 2026 -0800

    CASSSIDECAR-411: RangeManager should be singleton in CDCModule (#323)
    
    Patch by Jyothsna Konisa; Reviewed by Bernardo Botella, Yifan Cai and Josh 
McKenzie for CASSSIDECAR-411
---
 CHANGES.txt                                        |   1 +
 ...SharedClusterCdcSidecarIntegrationTestBase.java |   4 +-
 .../cassandra/sidecar/modules/CdcModule.java       |  19 +++-
 .../org/apache/cassandra/sidecar/TestModule.java   |  10 +-
 .../CassandraClientTokenRingProviderTest.java      | 104 ++++++++++-----------
 5 files changed, 79 insertions(+), 59 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index b5400d6a..a6e87008 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,6 @@
 0.3.0
 -----
+ * RangeManager should be singleton in CDCModule (CASSSIDECAR-411)
  * CDC: Add end-to-end CDC integration tests (CASSSIDECAR-308)
  * SchemaStorePublisherFactory should be Injectable in CachingSchemaStore 
(CASSSIDECAR-408)
  * Fix StorageClientTest Docker API compatibility and improve CI test 
reporting (CASSSIDECAR-410)
diff --git 
a/integration-tests/src/integrationTest/org/apache/cassandra/sidecar/testing/SharedClusterCdcSidecarIntegrationTestBase.java
 
b/integration-tests/src/integrationTest/org/apache/cassandra/sidecar/testing/SharedClusterCdcSidecarIntegrationTestBase.java
index 6f411000..56b68df2 100644
--- 
a/integration-tests/src/integrationTest/org/apache/cassandra/sidecar/testing/SharedClusterCdcSidecarIntegrationTestBase.java
+++ 
b/integration-tests/src/integrationTest/org/apache/cassandra/sidecar/testing/SharedClusterCdcSidecarIntegrationTestBase.java
@@ -45,6 +45,7 @@ import 
org.apache.cassandra.sidecar.config.SidecarConfiguration;
 import org.apache.cassandra.sidecar.config.yaml.ServiceConfigurationImpl;
 import org.apache.cassandra.sidecar.config.yaml.SidecarConfigurationImpl;
 import org.apache.cassandra.sidecar.coordination.ContentionFreeRangeManager;
+import org.apache.cassandra.sidecar.coordination.RangeManager;
 import org.apache.cassandra.sidecar.coordination.TokenRingProvider;
 import org.apache.cassandra.sidecar.db.CdcDatabaseAccessor;
 import org.apache.cassandra.sidecar.db.VirtualTablesDatabaseAccessor;
@@ -168,6 +169,7 @@ public abstract class 
SharedClusterCdcSidecarIntegrationTestBase extends SharedC
                                   Serializer<CdcEvent> avroSerializer,
                                   TokenRingProvider tokenRingProvider)
         {
+            RangeManager rangeManager = new ContentionFreeRangeManager(vertx, 
tokenRingProvider);
             return new TestCdcPublisher(vertx,
                                        sidecarConfiguration,
                                        executorPools,
@@ -182,7 +184,7 @@ public abstract class 
SharedClusterCdcSidecarIntegrationTestBase extends SharedC
                                        virtualTables,
                                        sidecarCdcStats,
                                        avroSerializer,
-                                       () -> new 
ContentionFreeRangeManager(vertx, tokenRingProvider));
+                                       () -> rangeManager);
         }
 
         @Provides
diff --git 
a/server/src/main/java/org/apache/cassandra/sidecar/modules/CdcModule.java 
b/server/src/main/java/org/apache/cassandra/sidecar/modules/CdcModule.java
index b6fc14e4..ddf094f9 100644
--- a/server/src/main/java/org/apache/cassandra/sidecar/modules/CdcModule.java
+++ b/server/src/main/java/org/apache/cassandra/sidecar/modules/CdcModule.java
@@ -53,6 +53,7 @@ import org.apache.cassandra.sidecar.cluster.InstancesMetadata;
 import org.apache.cassandra.sidecar.common.ApiEndpointsV1;
 import 
org.apache.cassandra.sidecar.common.request.data.AllServicesConfigPayload;
 import org.apache.cassandra.sidecar.common.response.ListCdcSegmentsResponse;
+import org.apache.cassandra.sidecar.common.server.dns.DnsResolver;
 import org.apache.cassandra.sidecar.concurrent.ExecutorPools;
 import org.apache.cassandra.sidecar.config.ServiceConfiguration;
 import org.apache.cassandra.sidecar.config.SidecarClientConfiguration;
@@ -61,6 +62,7 @@ import 
org.apache.cassandra.sidecar.coordination.CassandraClientTokenRingProvide
 import org.apache.cassandra.sidecar.coordination.ContentionFreeRangeManager;
 import 
org.apache.cassandra.sidecar.coordination.DynamicSidecarInstancesProvider;
 import 
org.apache.cassandra.sidecar.coordination.InnerDcTokenAdjacentPeerProvider;
+import org.apache.cassandra.sidecar.coordination.RangeManager;
 import org.apache.cassandra.sidecar.coordination.SidecarHttpHealthProvider;
 import org.apache.cassandra.sidecar.coordination.SidecarPeerHealthMonitorTask;
 import org.apache.cassandra.sidecar.coordination.SidecarPeerHealthProvider;
@@ -360,9 +362,9 @@ public class CdcModule extends AbstractModule
 
     @Provides
     @Singleton
-    public TokenRingProvider tokenRingProvider(InstancesMetadata 
instancesMetadata, InstanceMetadataFetcher instanceMetadataFetcher, 
ServiceConfiguration configuration)
+    public TokenRingProvider tokenRingProvider(InstancesMetadata 
instancesMetadata, InstanceMetadataFetcher instanceMetadataFetcher, DnsResolver 
dnsResolver)
     {
-        return new CassandraClientTokenRingProvider(instancesMetadata, 
instanceMetadataFetcher, configuration.dnsResolver());
+        return new CassandraClientTokenRingProvider(instancesMetadata, 
instanceMetadataFetcher, dnsResolver);
     }
 
     @Provides
@@ -375,6 +377,13 @@ public class CdcModule extends AbstractModule
                                                     
sidecarClientConfiguration.retryDelay().toIntMillis());
     }
 
+    @Provides
+    @Singleton
+    RangeManager rangeManager(Vertx vertx, TokenRingProvider tokenRingProvider)
+    {
+        return new ContentionFreeRangeManager(vertx, tokenRingProvider);
+    }
+
     @Provides
     @Singleton
     CdcPublisher cdcPublisher(Vertx vertx,
@@ -387,11 +396,11 @@ public class CdcModule extends AbstractModule
                               InstanceMetadataFetcher instanceMetadataFetcher,
                               CdcConfig conf,
                               CdcDatabaseAccessor databaseAccessor,
-                              TokenRingProvider tokenRingProvider,
                               ICdcStats cdcStats,
                               VirtualTablesDatabaseAccessor virtualTables,
                               SidecarCdcStats sidecarCdcStats,
-                              Serializer<CdcEvent> avroSerializer)
+                              Serializer<CdcEvent> avroSerializer,
+                              RangeManager rangeManager)
     {
         return new CdcPublisher(vertx,
                                 sidecarConfiguration,
@@ -407,7 +416,7 @@ public class CdcModule extends AbstractModule
                                 virtualTables,
                                 sidecarCdcStats,
                                 avroSerializer,
-                                () -> new ContentionFreeRangeManager(vertx, 
tokenRingProvider));
+                                () -> rangeManager);
     }
 
     @Provides
diff --git a/server/src/test/java/org/apache/cassandra/sidecar/TestModule.java 
b/server/src/test/java/org/apache/cassandra/sidecar/TestModule.java
index 9fdf5c15..87c33d60 100644
--- a/server/src/test/java/org/apache/cassandra/sidecar/TestModule.java
+++ b/server/src/test/java/org/apache/cassandra/sidecar/TestModule.java
@@ -36,6 +36,7 @@ import com.google.inject.Singleton;
 import com.google.inject.name.Named;
 import io.vertx.core.Vertx;
 import org.apache.cassandra.sidecar.cluster.CassandraAdapterDelegate;
+import 
org.apache.cassandra.sidecar.cluster.CassandraClientTokenRingProviderTest;
 import org.apache.cassandra.sidecar.cluster.InstancesMetadata;
 import org.apache.cassandra.sidecar.cluster.InstancesMetadataImpl;
 import org.apache.cassandra.sidecar.cluster.instance.InstanceMetadata;
@@ -199,7 +200,7 @@ public class TestModule extends AbstractModule
     {
         StorageOperations mockStorageOperations = 
mock(StorageOperations.class);
         
when(mockStorageOperations.dataFileLocations()).thenReturn(List.of(dataDir));
-        Metadata metadata = mock(Metadata.class);
+        Metadata metadata = CassandraClientTokenRingProviderTest.getMetadata();
         KeyspaceMetadata keyspaceMetadata = mock(KeyspaceMetadata.class);
         when(metadata.getKeyspace(any())).thenReturn(keyspaceMetadata);
         TableMetadata tableMetadata = mock(TableMetadata.class);
@@ -245,4 +246,11 @@ public class TestModule extends AbstractModule
         builder.add(new MockCassandraFactory());
         return builder.build();
     }
+
+    @Provides
+    @Singleton
+    public DnsResolver dnsResolver()
+    {
+        return CassandraClientTokenRingProviderTest.mockDnsResolver();
+    }
 }
diff --git 
a/server/src/test/java/org/apache/cassandra/sidecar/cluster/CassandraClientTokenRingProviderTest.java
 
b/server/src/test/java/org/apache/cassandra/sidecar/cluster/CassandraClientTokenRingProviderTest.java
index 39ccc16e..e4283280 100644
--- 
a/server/src/test/java/org/apache/cassandra/sidecar/cluster/CassandraClientTokenRingProviderTest.java
+++ 
b/server/src/test/java/org/apache/cassandra/sidecar/cluster/CassandraClientTokenRingProviderTest.java
@@ -92,46 +92,46 @@ public class CassandraClientTokenRingProviderTest
             }
         };
         Set<Host> allHosts = Set.of(
-        mockHost("local1", "127.0.0.1", "-9223372036854775808", "DC1"),
-        mockHost("local2", "127.0.0.2", "-8301034833169298228", "DC1"),
-        mockHost("local3", "127.0.0.3", "-7378697629483820647", "DC1"),
-        mockHost("local4", "127.0.0.4", "-6456360425798343066", "DC1"),
-        mockHost("local5", "127.0.0.5", "-5534023222112865485", "DC1"),
-        mockHost("local6", "127.0.0.6", "-4611686018427387904", "DC1"),
-        mockHost("local7", "127.0.0.7", "-3689348814741910324", "DC1"),
-        mockHost("local8", "127.0.0.8", "-2767011611056432743", "DC1"),
-        mockHost("local9", "127.0.0.9", "-1844674407370955162", "DC1"),
-        mockHost("local10", "127.0.0.10", "-922337203685477581", "DC1"),
-        mockHost("local11", "127.0.0.11", "0", "DC1"),
-        mockHost("local12", "127.0.0.12", "922337203685477580", "DC1"),
-        mockHost("local13", "127.0.0.13", "1844674407370955161", "DC1"),
-        mockHost("local14", "127.0.0.14", "2767011611056432742", "DC1"),
-        mockHost("local15", "127.0.0.15", "3689348814741910323", "DC1"),
-        mockHost("local16", "127.0.0.16", "4611686018427387904", "DC1"),
-        mockHost("local17", "127.0.0.17", "5534023222112865484", "DC1"),
-        mockHost("local18", "127.0.0.18", "6456360425798343065", "DC1"),
-        mockHost("local19", "127.0.0.19", "7378697629483820646", "DC1"),
-        mockHost("local20", "127.0.0.20", "8301034833169298227", "DC1"),
-        mockHost("local21", "127.0.0.21", "-9223372036854775807", "DC2"),
-        mockHost("local22", "127.0.0.22", "-8301034833169298227", "DC2"),
-        mockHost("local23", "127.0.0.23", "-7378697629483820646", "DC2"),
-        mockHost("local24", "127.0.0.24", "-6456360425798343065", "DC2"),
-        mockHost("local25", "127.0.0.25", "-5534023222112865484", "DC2"),
-        mockHost("local26", "127.0.0.26", "-4611686018427387903", "DC2"),
-        mockHost("local27", "127.0.0.27", "-3689348814741910323", "DC2"),
-        mockHost("local28", "127.0.0.28", "-2767011611056432742", "DC2"),
-        mockHost("local29", "127.0.0.29", "-1844674407370955161", "DC2"),
-        mockHost("local30", "127.0.0.30", "-922337203685477580", "DC2"),
-        mockHost("local31", "127.0.0.31", "1", "DC2"),
-        mockHost("local32", "127.0.0.32", "922337203685477581", "DC2"),
-        mockHost("local33", "127.0.0.33", "1844674407370955162", "DC2"),
-        mockHost("local34", "127.0.0.34", "2767011611056432743", "DC2"),
-        mockHost("local35", "127.0.0.35", "3689348814741910324", "DC2"),
-        mockHost("local36", "127.0.0.36", "4611686018427387905", "DC2"),
-        mockHost("local37", "127.0.0.37", "5534023222112865485", "DC2"),
-        mockHost("local38", "127.0.0.38", "6456360425798343066", "DC2"),
-        mockHost("local39", "127.0.0.39", "7378697629483820647", "DC2"),
-        mockHost("local40", "127.0.0.40", "8301034833169298228", "DC2")
+        mockHost("localhost1", "127.0.0.1", "-9223372036854775808", "DC1"),
+        mockHost("localhost2", "127.0.0.2", "-8301034833169298228", "DC1"),
+        mockHost("localhost3", "127.0.0.3", "-7378697629483820647", "DC1"),
+        mockHost("localhost4", "127.0.0.4", "-6456360425798343066", "DC1"),
+        mockHost("localhost5", "127.0.0.5", "-5534023222112865485", "DC1"),
+        mockHost("localhost6", "127.0.0.6", "-4611686018427387904", "DC1"),
+        mockHost("localhost7", "127.0.0.7", "-3689348814741910324", "DC1"),
+        mockHost("localhost8", "127.0.0.8", "-2767011611056432743", "DC1"),
+        mockHost("localhost9", "127.0.0.9", "-1844674407370955162", "DC1"),
+        mockHost("localhost10", "127.0.0.10", "-922337203685477581", "DC1"),
+        mockHost("localhost11", "127.0.0.11", "0", "DC1"),
+        mockHost("localhost12", "127.0.0.12", "922337203685477580", "DC1"),
+        mockHost("localhost13", "127.0.0.13", "1844674407370955161", "DC1"),
+        mockHost("localhost14", "127.0.0.14", "2767011611056432742", "DC1"),
+        mockHost("localhost15", "127.0.0.15", "3689348814741910323", "DC1"),
+        mockHost("localhost16", "127.0.0.16", "4611686018427387904", "DC1"),
+        mockHost("localhost17", "127.0.0.17", "5534023222112865484", "DC1"),
+        mockHost("localhost18", "127.0.0.18", "6456360425798343065", "DC1"),
+        mockHost("localhost19", "127.0.0.19", "7378697629483820646", "DC1"),
+        mockHost("localhost20", "127.0.0.20", "8301034833169298227", "DC1"),
+        mockHost("localhost21", "127.0.0.21", "-9223372036854775807", "DC2"),
+        mockHost("localhost22", "127.0.0.22", "-8301034833169298227", "DC2"),
+        mockHost("localhost23", "127.0.0.23", "-7378697629483820646", "DC2"),
+        mockHost("localhost24", "127.0.0.24", "-6456360425798343065", "DC2"),
+        mockHost("localhost25", "127.0.0.25", "-5534023222112865484", "DC2"),
+        mockHost("localhost26", "127.0.0.26", "-4611686018427387903", "DC2"),
+        mockHost("localhost27", "127.0.0.27", "-3689348814741910323", "DC2"),
+        mockHost("localhost28", "127.0.0.28", "-2767011611056432742", "DC2"),
+        mockHost("localhost29", "127.0.0.29", "-1844674407370955161", "DC2"),
+        mockHost("localhost30", "127.0.0.30", "-922337203685477580", "DC2"),
+        mockHost("localhost31", "127.0.0.31", "1", "DC2"),
+        mockHost("localhost32", "127.0.0.32", "922337203685477581", "DC2"),
+        mockHost("localhost33", "127.0.0.33", "1844674407370955162", "DC2"),
+        mockHost("localhost34", "127.0.0.34", "2767011611056432743", "DC2"),
+        mockHost("localhost35", "127.0.0.35", "3689348814741910324", "DC2"),
+        mockHost("localhost36", "127.0.0.36", "4611686018427387905", "DC2"),
+        mockHost("localhost37", "127.0.0.37", "5534023222112865485", "DC2"),
+        mockHost("localhost38", "127.0.0.38", "6456360425798343066", "DC2"),
+        mockHost("localhost39", "127.0.0.39", "7378697629483820647", "DC2"),
+        mockHost("localhost40", "127.0.0.40", "8301034833169298228", "DC2")
         );
         when(metadata.getAllHosts()).thenReturn(allHosts);
 
@@ -208,7 +208,7 @@ public class CassandraClientTokenRingProviderTest
                                                     .compareTo(BigInteger.ONE) 
> 0));
     }
 
-    private static Host mockHost(String node, String ip, String token, String 
dc)
+    public static Host mockHost(String node, String ip, String token, String 
dc)
     {
         Host host = mock(Host.class, RETURNS_DEEP_STUBS);
         when(host.getTokens()).thenAnswer(invocation -> Set.of(new 
MockToken(token)));
@@ -282,12 +282,12 @@ public class CassandraClientTokenRingProviderTest
         }
     }
 
-    protected DnsResolver mockDnsResolver()
+    public static DnsResolver mockDnsResolver()
     {
 
-        Map<String, String> dnsMap = Map.of("local1", "127.0.0.1",
-                                            "local2", "127.0.0.2",
-                                            "local13", "127.0.0.3"
+        Map<String, String> dnsMap = Map.of("localhost", "127.0.0.1",
+                                            "localhost2", "127.0.0.2",
+                                            "localhost3", "127.0.0.3"
                                             );
         DnsResolver dnsResolver = mock(DnsResolver.class);
         try
@@ -308,21 +308,21 @@ public class CassandraClientTokenRingProviderTest
     {
         InstancesMetadata instancesMetadata = mock(InstancesMetadata.class);
 
-        InstanceMetadata instance1 = getMockInstanceMetaData(101000101, 
"local1", getMetadata());
-        InstanceMetadata instance2 = getMockInstanceMetaData(101000201, 
"local2", getMetadata());
-        InstanceMetadata instance3 = getMockInstanceMetaData(101000301, 
"local3", getMetadata());
+        InstanceMetadata instance1 = getMockInstanceMetaData(101000101, 
"localhost", getMetadata());
+        InstanceMetadata instance2 = getMockInstanceMetaData(101000201, 
"localhost2", getMetadata());
+        InstanceMetadata instance3 = getMockInstanceMetaData(101000301, 
"localhost3", getMetadata());
         when(instancesMetadata.instances()).thenReturn(List.of(instance1, 
instance2, instance3));
         return instancesMetadata;
     }
 
-    private Metadata getMetadata()
+    public static Metadata getMetadata()
     {
         Metadata metadata = mock(Metadata.class);
         
when(metadata.getPartitioner()).thenReturn(Partitioners.MURMUR3.getClass().getSimpleName().toLowerCase());
         Set<Host> allHosts = Set.of(
-        mockHost("local1", "127.0.0.1", "-9223372036854775808", "DC1"),
-        mockHost("local2", "127.0.0.2", "-8301034833169298228", "DC1"),
-        mockHost("local3", "127.0.0.3", "-7378697629483820647", "DC1")
+        mockHost("localhost", "127.0.0.1", "-9223372036854775808", "DC1"),
+        mockHost("localhost2", "127.0.0.2", "-8301034833169298228", "DC1"),
+        mockHost("localhost3", "127.0.0.3", "-7378697629483820647", "DC1")
         );
         when(metadata.getAllHosts()).thenReturn(allHosts);
         return metadata;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to