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

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

commit c988b609b0239e37f37e3b764728d960220cc3e8
Merge: 176519a45c aa0e2f1631
Author: Doug Rohrer <[email protected]>
AuthorDate: Fri Oct 24 14:22:02 2025 -0400

    Merge branch 'cassandra-4.0' into cassandra-4.1
    
    * cassandra-4.0:
      CASSANDRA-20884 - Move JMX classes to the in-jvm-dtest API project

 CHANGES.txt                                        |  4 +
 build.xml                                          |  2 +-
 ide/nbproject/project.xml                          |  2 +-
 .../utils/RMIClientSocketFactoryImpl.java          | 81 --------------------
 .../distributed/impl/AbstractCluster.java          |  8 +-
 .../impl/CollectingRMIServerSocketFactoryImpl.java | 87 ----------------------
 .../cassandra/distributed/impl/Instance.java       |  3 -
 .../cassandra/distributed/impl/IsolatedJmx.java    |  4 +-
 8 files changed, 10 insertions(+), 181 deletions(-)

diff --cc CHANGES.txt
index a742aa8158,ddbee6860e..dc70d2bce4
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,17 -1,9 +1,21 @@@
 -4.0.20
++4.1.12
++Merged from 4.0
+  * Updated dtest-api to 0.0.18 and removed JMX-related classes that now live 
in the dtest-api (CASSANDRA-20884)
+ 
 -4.0.19
 +4.1.11
 + * Redact security-sensitive information in system_views.settings 
(CASSANDRA-20856)
 +Merged from 4.0:
   * Fixed incorrect error message constant for keyspace name length validation 
(CASSANDRA-20915)
   * update shaded cassandra-driver-core to 3.11.5 (CASSANDRA-20904)
 +
 +
 +4.1.10
 + * Improve CommitLogSegmentReader to skip SyncBlocks correctly in case of CRC 
errors (CASSANDRA-20664)
 + * Do not crash on first boot with data_disk_usage_max_disk_size set when 
data directory is not created yet (CASSANDRA-20787)
 + * Rework / simplification of nodetool get/setguardrailsconfig commands 
(CASSANDRA-20778)
 + * IntrusiveStack.accumulate is not accumulating correctly (CASSANDRA-20670)
 + * Add nodetool get/setguardrailsconfig commands (CASSANDRA-19552)
 +Merged from 4.0:
   * Prevent too long table names not fitting file names (CASSANDRA-20389)
   * Fix IndexOutOfBoundsException in sstablemetadata tool when a range 
tombstone is a max clustering value (CASSANDRA-20855)
   * Update Jackson to 2.19.2 (CASSANDRA-20848)
diff --cc build.xml
index 98159fe84f,1682bc4ace..bb33058ec8
--- a/build.xml
+++ b/build.xml
@@@ -170,8 -160,6 +170,8 @@@
      <property name="chronicle-wire.version" value="2.20.117" />
      <property name="chronicle-threads.version" value="2.20.111" />
  
-     <property name="dtest-api.version" value="0.0.16" />
++    <property name="dtest-api.version" value="0.0.18" />
 +
      <condition property="maven-ant-tasks.jar.exists">
        <available 
file="${build.dir}/maven-ant-tasks-${maven-ant-tasks.version}.jar" />
      </condition>
diff --cc ide/nbproject/project.xml
index 71f3ee5b31,09460aca11..beccd5683c
--- a/ide/nbproject/project.xml
+++ b/ide/nbproject/project.xml
@@@ -7,7 -7,7 +7,7 @@@
              <properties>
                  <property name="project.dir">..</property>
                  <!-- the compile classpaths should be distinct per 
compilation unit… but it is kept simple and the build will catch errors -->
-                 <property 
name="cassandra.classpath.jars">${project.dir}/build/lib/jars/HdrHistogram-2.1.12.jar:${project.dir}/build/lib/jars/ST4-4.0.8.jar:${project.dir}/build/lib/jars/airline-0.8.jar:${project.dir}/build/lib/jars/antlr-3.5.2.jar:${project.dir}/build/lib/jars/antlr-runtime-3.5.2.jar:${project.dir}/build/lib/jars/asm-9.1.jar:${project.dir}/build/lib/jars/byteman-4.0.6.jar:${project.dir}/build/lib/jars/byteman-bmunit-4.0.6.jar:${project.dir}/build/lib/jars/byteman-instal
 [...]
 -                <property 
name="cassandra.classpath.jars">${project.dir}/build/lib/jars/HdrHistogram-2.1.12.jar:${project.dir}/build/lib/jars/ST4-4.0.8.jar:${project.dir}/build/lib/jars/airline-0.8.jar:${project.dir}/build/lib/jars/antlr-3.5.2.jar:${project.dir}/build/lib/jars/antlr-runtime-3.5.2.jar:${project.dir}/build/lib/jars/asm-7.1.jar:${project.dir}/build/lib/jars/byteman-4.0.6.jar:${project.dir}/build/lib/jars/byteman-bmunit-4.0.6.jar:${project.dir}/build/lib/jars/byteman-instal
 [...]
++                <property 
name="cassandra.classpath.jars">${project.dir}/build/lib/jars/HdrHistogram-2.1.12.jar:${project.dir}/build/lib/jars/ST4-4.0.8.jar:${project.dir}/build/lib/jars/airline-0.8.jar:${project.dir}/build/lib/jars/antlr-3.5.2.jar:${project.dir}/build/lib/jars/antlr-runtime-3.5.2.jar:${project.dir}/build/lib/jars/asm-9.1.jar:${project.dir}/build/lib/jars/byteman-4.0.6.jar:${project.dir}/build/lib/jars/byteman-bmunit-4.0.6.jar:${project.dir}/build/lib/jars/byteman-instal
 [...]
              </properties>
              <folders>
                  <source-folder>
diff --cc 
test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
index 8296e7b208,4fe139e8e5..af9335a093
--- 
a/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
@@@ -198,15 -178,8 +198,9 @@@ public abstract class AbstractCluster<
          public AbstractBuilder(Factory<I, C, B> factory)
          {
              super(factory);
 +            withSharedClasses(SHARED_PREDICATE);
          }
  
-         @SuppressWarnings("unchecked")
-         private B self()
-         {
-             return (B) this;
-         }
- 
          public B withNodeProvisionStrategy(INodeProvisionStrategy.Strategy 
nodeProvisionStrategy)
          {
              this.nodeProvisionStrategy = nodeProvisionStrategy;
@@@ -584,45 -450,15 +578,45 @@@
      }
  
      @VisibleForTesting
-     InstanceConfig createInstanceConfig(int nodeNum)
+     public InstanceConfig createInstanceConfig(int nodeNum)
      {
          INodeProvisionStrategy provisionStrategy = 
nodeProvisionStrategy.create(subnet, portMap);
 -        long token = tokenSupplier.token(nodeNum);
 +        Collection<String> tokens = tokenSupplier.tokens(nodeNum);
          NetworkTopology topology = buildNetworkTopology(provisionStrategy, 
nodeIdTopology);
 -        InstanceConfig config = InstanceConfig.generate(nodeNum, 
provisionStrategy, topology, root, Long.toString(token), datadirCount);
 +        InstanceConfig config = InstanceConfig.generate(nodeNum, 
provisionStrategy, topology, root, tokens, datadirCount);
          config.set(Constants.KEY_DTEST_API_CLUSTER_ID, clusterId.toString());
 +        // if a test sets num_tokens directly, then respect it and only run 
if vnode or no-vnode is defined
 +        int defaultTokenCount = config.getInt("num_tokens");
 +        assert tokens.size() == defaultTokenCount : 
String.format("num_tokens=%d but tokens are %s; size does not match", 
defaultTokenCount, tokens);
 +        String defaultTokens = config.getString("initial_token");
          if (configUpdater != null)
 +        {
              configUpdater.accept(config);
 +            int testTokenCount = config.getInt("num_tokens");
 +            if (defaultTokenCount != testTokenCount)
 +            {
 +                if (testTokenCount == 1)
 +                {
 +                    // test is no-vnode, but running with vnode, so skip
 +                    Assume.assumeTrue("vnode is not supported", false);
 +                }
 +                else
 +                {
 +                    Assume.assumeTrue("no-vnode is requested but not 
supported", defaultTokenCount > 1);
 +                    // if the test controls initial_token or GOSSIP is 
enabled, then the test is safe to run
 +                    if 
(defaultTokens.equals(config.getString("initial_token")))
 +                    {
 +                        // test didn't define initial_token
 +                        Assume.assumeTrue("vnode is enabled and num_tokens is 
defined in test without GOSSIP or setting initial_token", 
config.has(Feature.GOSSIP));
 +                        config.remove("initial_token");
 +                    }
 +                    else
 +                    {
 +                        // test defined initial_token; trust it
 +                    }
 +                }
 +            }
 +        }
          return config;
      }
  
diff --cc test/distributed/org/apache/cassandra/distributed/impl/Instance.java
index 0f96af78b2,caebaa0c26..1b1dd2a255
--- a/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
@@@ -148,8 -135,8 +148,7 @@@ import org.apache.cassandra.utils.FBUti
  import org.apache.cassandra.utils.JMXServerUtils;
  import org.apache.cassandra.utils.JVMStabilityInspector;
  import org.apache.cassandra.utils.MBeanWrapper;
- import org.apache.cassandra.utils.RMIClientSocketFactoryImpl;
  import org.apache.cassandra.utils.Throwables;
 -import org.apache.cassandra.utils.UUIDSerializer;
  import org.apache.cassandra.utils.concurrent.Ref;
  import org.apache.cassandra.utils.memory.BufferPools;
  import org.apache.cassandra.utils.progress.jmx.JMXBroadcastExecutor;
@@@ -182,27 -162,14 +181,25 @@@ public class Instance extends IsolatedE
      private JMXServerUtils.JmxRegistry registry;
      private RMIJRMPServerImpl jmxRmiServer;
      private MBeanWrapper.InstanceMBeanWrapper wrapper;
-     private RMIClientSocketFactoryImpl clientSocketFactory;
-     private CollectingRMIServerSocketFactoryImpl serverSocketFactory;
      private IsolatedJmx isolatedJmx;
  
 -    // should never be invoked directly, so that it is instantiated on other 
class loader;
 -    // only visible for inheritance
 +    @Deprecated
      Instance(IInstanceConfig config, ClassLoader classLoader)
      {
 -        super("node" + config.num(), classLoader);
 +        this(config, classLoader, null);
 +    }
 +
 +    Instance(IInstanceConfig config, ClassLoader classLoader, FileSystem 
fileSystem)
 +    {
 +        this(config, classLoader, fileSystem, null);
 +    }
 +
 +    Instance(IInstanceConfig config, ClassLoader classLoader, FileSystem 
fileSystem, ShutdownExecutor shutdownExecutor)
 +    {
 +        super("node" + config.num(), classLoader, 
executorFactory().pooled("isolatedExecutor", Integer.MAX_VALUE), 
shutdownExecutor);
          this.config = config;
 +        if (fileSystem != null)
 +            File.unsafeSetFilesystem(fileSystem);
          Object clusterId = 
Objects.requireNonNull(config.get(Constants.KEY_DTEST_API_CLUSTER_ID), 
"cluster_id is not defined");
          ClusterIDDefiner.setId("cluster-" + clusterId);
          InstanceIDDefiner.setInstanceId(config.num());


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

Reply via email to