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

ifesdjeen pushed a commit to branch cassandra-2.2
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-2.2 by this push:
     new 5635928  Pass correct seed node through to InstanceConfig so it can 
set it properly when starting clusters on non-0 subnets.
5635928 is described below

commit 563592801aad00e002f0a162d5e2625a4b0e8723
Author: Doug Rohrer <[email protected]>
AuthorDate: Wed Dec 11 21:33:24 2019 -0500

    Pass correct seed node through to InstanceConfig so it can set it properly 
when starting clusters on non-0 subnets.
    
    Patch by Doug Rohrer, reviewed by Yifan Cai and David Capwell for 
CASSANDRA-15447.
---
 .../distributed/impl/AbstractCluster.java          |  3 +-
 .../cassandra/distributed/impl/InstanceConfig.java |  6 ++--
 .../distributed/test/GossipSettlesTest.java        | 42 ++++++++++++++++++++++
 3 files changed, 48 insertions(+), 3 deletions(-)

diff --git 
a/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java 
b/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
index cc01ad6..45e9919 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
@@ -630,6 +630,7 @@ public abstract class AbstractCluster<I extends IInstance> 
implements ICluster,
             long token = Long.MIN_VALUE + 1, increment = 2 * (Long.MAX_VALUE / 
nodeCount);
 
             String ipPrefix = "127.0." + subnet + ".";
+            String seedIp = ipPrefix + "1";
 
             NetworkTopology networkTopology = NetworkTopology.build(ipPrefix, 
7012, nodeIdTopology);
 
@@ -637,7 +638,7 @@ public abstract class AbstractCluster<I extends IInstance> 
implements ICluster,
             {
                 int nodeNum = i + 1;
                 String ipAddress = ipPrefix + nodeNum;
-                InstanceConfig config = InstanceConfig.generate(i + 1, 
ipAddress, networkTopology, root, String.valueOf(token));
+                InstanceConfig config = InstanceConfig.generate(i + 1, 
ipAddress, networkTopology, root, String.valueOf(token), seedIp);
                 if (configUpdater != null)
                     configUpdater.accept(config);
                 configs.add(config);
diff --git 
a/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java 
b/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
index 97e1a18..c53012b 100644
--- a/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
@@ -81,6 +81,7 @@ public class InstanceConfig implements IInstanceConfig
                            String listen_address,
                            String broadcast_rpc_address,
                            String rpc_address,
+                           String seedIp,
                            String saved_caches_directory,
                            String[] data_file_directories,
                            String commitlog_directory,
@@ -114,7 +115,7 @@ public class InstanceConfig implements IInstanceConfig
                 .set("storage_port", 7012)
                 .set("endpoint_snitch", DistributedTestSnitch.class.getName())
                 .set("seed_provider", new 
ParameterizedClass(SimpleSeedProvider.class.getName(),
-                        Collections.singletonMap("seeds", "127.0.0.1")))
+                        Collections.singletonMap("seeds", seedIp)))
                 .set("auto_bootstrap", false)
                 // capacities that are based on `totalMemory` that should be 
fixed size
                 .set("index_summary_capacity_in_mb", 50l)
@@ -237,7 +238,7 @@ public class InstanceConfig implements IInstanceConfig
         return (String)params.get(name);
     }
 
-    public static InstanceConfig generate(int nodeNum, String ipAddress, 
NetworkTopology networkTopology, File root, String token)
+    public static InstanceConfig generate(int nodeNum, String ipAddress, 
NetworkTopology networkTopology, File root, String token, String seedIp)
     {
         return new InstanceConfig(nodeNum,
                                   networkTopology,
@@ -245,6 +246,7 @@ public class InstanceConfig implements IInstanceConfig
                                   ipAddress,
                                   ipAddress,
                                   ipAddress,
+                                  seedIp,
                                   String.format("%s/node%d/saved_caches", 
root, nodeNum),
                                   new String[] { 
String.format("%s/node%d/data", root, nodeNum) },
                                   String.format("%s/node%d/commitlog", root, 
nodeNum),
diff --git 
a/test/distributed/org/apache/cassandra/distributed/test/GossipSettlesTest.java 
b/test/distributed/org/apache/cassandra/distributed/test/GossipSettlesTest.java
new file mode 100644
index 0000000..5f1263a
--- /dev/null
+++ 
b/test/distributed/org/apache/cassandra/distributed/test/GossipSettlesTest.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cassandra.distributed.test;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+import org.apache.cassandra.distributed.Cluster;
+
+import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
+import static org.apache.cassandra.distributed.api.Feature.NETWORK;
+
+public class GossipSettlesTest extends DistributedTestBase
+{
+
+    @Test
+    public void testGossipSettles() throws IOException
+    {
+        // Use withSubnet(1) to prove seed provider is set correctly - without 
the fix to pass a seed provider, this test fails
+        try (Cluster cluster = Cluster.build(3).withConfig(config -> 
config.with(GOSSIP).with(NETWORK)).withSubnet(1).start())
+        {
+        }
+    }
+
+}


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

Reply via email to