You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pr@cassandra.apache.org by GitBox <gi...@apache.org> on 2021/02/11 04:43:06 UTC

[GitHub] [cassandra-dtest] ekaterinadimitrova2 commented on a change in pull request #117: CASSANDRA-16296 Node can join when RF > N in multi-DC

ekaterinadimitrova2 commented on a change in pull request #117:
URL: https://github.com/apache/cassandra-dtest/pull/117#discussion_r574248460



##########
File path: bootstrap_test.py
##########
@@ -280,6 +280,55 @@ def test_consistent_range_movement_true_with_rf1_should_fail(self):
     def test_consistent_range_movement_false_with_rf1_should_succeed(self):
         self._bootstrap_test_with_replica_down(False, rf=1)
 
+    def test_rf_gt_nodes_multidc_should_succeed(self):
+        """
+        Validating a KS with RF > N on multi DC doesn't break bootstrap
+        @jira_ticket CASSANDRA-16296 CASSANDRA-16411
+        """
+        cluster = self.cluster
+        cluster.set_environment_variable('CASSANDRA_TOKEN_PREGENERATION_DISABLED', 'True')
+        cluster.populate([1, 1])
+        cluster.start()
+
+        node1 = cluster.nodelist()[0]
+        node2 = cluster.nodelist()[1]
+        session = self.patient_exclusive_cql_connection(node1)
+        session.execute("CREATE KEYSPACE k WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc1' : '3'}")
+
+        if cluster.version() >= '4.0':
+            warning = 'Your replication factor 3 for keyspace k is higher than the number of nodes 1 for datacenter dc1'
+            assert len(node1.grep_log(warning)) == 1
+            assert len(node2.grep_log(warning)) == 0
+
+        session.execute("ALTER KEYSPACE k WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc1' : '2'}")
+        session.execute("CREATE TABLE k.testgtrfmultidc (KEY text PRIMARY KEY)")
+        session.execute("INSERT INTO k.testgtrfmultidc (KEY) VALUES ('test_rf_gt_nodes_multidc_should_succeed')")
+
+        if cluster.version() >= '4.0':
+            warning = 'Your replication factor 2 for keyspace k is higher than the number of nodes 1 for datacenter dc1'
+            assert len(node1.grep_log(warning)) == 1
+            assert len(node2.grep_log(warning)) == 0
+
+        marks = map(lambda n: n.mark_log(), cluster.nodelist())
+        node3 = Node(name='node3',
+                     cluster=cluster,
+                     auto_bootstrap=True,
+                     thrift_interface=('127.0.0.3', 9160),
+                     storage_interface=('127.0.0.3', 7000),
+                     jmx_port='7300',
+                     remote_debug_port='0',
+                     initial_token=None,
+                     binary_interface=('127.0.0.3', 9042))
+        cluster.add(node3, is_seed=False, data_center="dc1")
+        node3.start(wait_for_binary_proto=True)
+        if cluster.version() >= '4.0':
+            warning = 'is higher than the number of nodes'
+            for (node, mark) in zip(cluster.nodelist(), marks):
+                assert len(node.grep_log(warning, from_mark=mark)) == 0
+

Review comment:
       While testing, I observed that node3 gets flooded with those. (not part of this patch but made me wonder....):
   ```
   WARN  [MigrationStage:1] 2021-02-10 23:32:53,370 MigrationCoordinator.java:429 - Can't send schema pull request: node /127.0.0.1:7000 is down.
   WARN  [MigrationStage:1] 2021-02-10 23:32:53,371 MigrationCoordinator.java:429 - Can't send schema pull request: node /127.0.0.2:7000 is down.
   ```
   




----------------------------------------------------------------
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.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: pr-unsubscribe@cassandra.apache.org
For additional commands, e-mail: pr-help@cassandra.apache.org