This is an automated email from the ASF dual-hosted git repository.
jeetkundoug pushed a commit to branch cassandra-4.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-4.0 by this push:
new aa0e2f1631 CASSANDRA-20884 - Move JMX classes to the in-jvm-dtest API
project
aa0e2f1631 is described below
commit aa0e2f1631ae343e35334e5419b193a9a1cfa0a6
Author: Doug Rohrer <[email protected]>
AuthorDate: Wed Sep 3 17:01:33 2025 -0400
CASSANDRA-20884 - Move JMX classes to the in-jvm-dtest API project
patch by Doug Rohrer; reviewed by Francisco Guerrero and Bernardo Botella
Corbi for CASSANDRA-20884
---
CHANGES.txt | 3 +
build.xml | 2 +-
ide/nbproject/project.xml | 2 +-
.../utils/RMIClientSocketFactoryImpl.java | 82 --------------------
.../distributed/impl/AbstractCluster.java | 10 +--
.../impl/CollectingRMIServerSocketFactoryImpl.java | 87 ----------------------
.../cassandra/distributed/impl/Instance.java | 3 -
.../cassandra/distributed/impl/IsolatedJmx.java | 4 +-
8 files changed, 11 insertions(+), 182 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 57e633f2a4..ddbee6860e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,6 @@
+4.0.20
+ * Updated dtest-api to 0.0.18 and removed JMX-related classes that now live
in the dtest-api (CASSANDRA-20884)
+
4.0.19
* Fixed incorrect error message constant for keyspace name length validation
(CASSANDRA-20915)
* update shaded cassandra-driver-core to 3.11.5 (CASSANDRA-20904)
diff --git a/build.xml b/build.xml
index 6f71ac762b..1682bc4ace 100644
--- a/build.xml
+++ b/build.xml
@@ -589,7 +589,7 @@
<dependency groupId="com.google.code.java-allocation-instrumenter"
artifactId="java-allocation-instrumenter"
version="${allocation-instrumenter.version}" scope="test">
<exclusion groupId="com.google.guava" artifactId="guava"/>
</dependency>
- <dependency groupId="org.apache.cassandra" artifactId="dtest-api"
version="0.0.16" scope="test"/>
+ <dependency groupId="org.apache.cassandra" artifactId="dtest-api"
version="0.0.18" scope="test"/>
<dependency groupId="org.reflections" artifactId="reflections"
version="0.10.2" scope="test"/>
<dependency groupId="org.apache.hadoop" artifactId="hadoop-core"
version="1.0.3" scope="provided">
<exclusion groupId="org.mortbay.jetty" artifactId="servlet-api"/>
diff --git a/ide/nbproject/project.xml b/ide/nbproject/project.xml
index 552b9d46c3..09460aca11 100644
--- a/ide/nbproject/project.xml
+++ b/ide/nbproject/project.xml
@@ -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-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-install
[...]
+ <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-install
[...]
</properties>
<folders>
<source-folder>
diff --git
a/src/java/org/apache/cassandra/utils/RMIClientSocketFactoryImpl.java
b/src/java/org/apache/cassandra/utils/RMIClientSocketFactoryImpl.java
deleted file mode 100644
index 81e728eeb9..0000000000
--- a/src/java/org/apache/cassandra/utils/RMIClientSocketFactoryImpl.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.utils;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.rmi.server.RMIClientSocketFactory;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * This class is used to override the local address the JMX client calculates
when trying to connect,
- * which can otherwise be influenced by the system property
"java.rmi.server.hostname" in strange and
- * unpredictable ways.
- */
-public class RMIClientSocketFactoryImpl implements RMIClientSocketFactory,
Serializable
-{
- List<Socket> sockets = new ArrayList<>();
- private final InetAddress localAddress;
-
- public RMIClientSocketFactoryImpl(InetAddress localAddress)
- {
- this.localAddress = localAddress;
- }
-
- @Override
- public Socket createSocket(String host, int port) throws IOException
- {
- Socket socket = new Socket(localAddress, port);
- sockets.add(socket);
- return socket;
- }
-
- public void close() throws IOException
- {
- for (Socket socket: sockets)
- {
- try
- {
- socket.close();
- }
- catch (IOException ignored)
- {
- // intentionally ignored
- }
- }
- }
-
- @Override
- public boolean equals(Object o)
- {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- RMIClientSocketFactoryImpl that = (RMIClientSocketFactoryImpl) o;
- return Objects.equals(localAddress, that.localAddress);
- }
-
- @Override
- public int hashCode()
- {
- return Objects.hash(localAddress);
- }
-}
diff --git
a/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
b/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
index 4d693ff856..4fe139e8e5 100644
---
a/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
+++
b/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
@@ -44,6 +44,7 @@ import java.util.stream.Stream;
import javax.annotation.concurrent.GuardedBy;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Sets;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -179,12 +180,6 @@ public abstract class AbstractCluster<I extends IInstance>
implements ICluster<I
super(factory);
}
- @SuppressWarnings("unchecked")
- private B self()
- {
- return (B) this;
- }
-
public B withNodeProvisionStrategy(INodeProvisionStrategy.Strategy
nodeProvisionStrategy)
{
this.nodeProvisionStrategy = nodeProvisionStrategy;
@@ -454,7 +449,8 @@ public abstract class AbstractCluster<I extends IInstance>
implements ICluster<I
return createInstanceConfig(size() + 1);
}
- private InstanceConfig createInstanceConfig(int nodeNum)
+ @VisibleForTesting
+ public InstanceConfig createInstanceConfig(int nodeNum)
{
INodeProvisionStrategy provisionStrategy =
nodeProvisionStrategy.create(subnet, portMap);
long token = tokenSupplier.token(nodeNum);
diff --git
a/test/distributed/org/apache/cassandra/distributed/impl/CollectingRMIServerSocketFactoryImpl.java
b/test/distributed/org/apache/cassandra/distributed/impl/CollectingRMIServerSocketFactoryImpl.java
deleted file mode 100644
index 0f16286b4d..0000000000
---
a/test/distributed/org/apache/cassandra/distributed/impl/CollectingRMIServerSocketFactoryImpl.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.impl;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.SocketException;
-import java.rmi.server.RMIServerSocketFactory;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-import javax.net.ServerSocketFactory;
-
-/**
- * This class is used to keep track of RMI servers created during a cluster
creation so we can
- * later close the sockets, which would otherwise be left with a thread
running waiting for
- * connections that would never show up as the server was otherwise closed.
- */
-class CollectingRMIServerSocketFactoryImpl implements RMIServerSocketFactory
-{
- private final InetAddress bindAddress;
- List<ServerSocket> sockets = new ArrayList<>();
-
- public CollectingRMIServerSocketFactoryImpl(InetAddress bindAddress)
- {
- this.bindAddress = bindAddress;
- }
-
- @Override
- public ServerSocket createServerSocket(int pPort) throws IOException
- {
- ServerSocket result =
ServerSocketFactory.getDefault().createServerSocket(pPort, 0, bindAddress);
- try
- {
- result.setReuseAddress(true);
- }
- catch (SocketException e)
- {
- result.close();
- throw e;
- }
- sockets.add(result);
- return result;
- }
-
-
- public void close() throws IOException
- {
- for (ServerSocket socket : sockets)
- {
- socket.close();
- }
- }
-
- @Override
- public boolean equals(Object o)
- {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- CollectingRMIServerSocketFactoryImpl that =
(CollectingRMIServerSocketFactoryImpl) o;
- return Objects.equals(bindAddress, that.bindAddress);
- }
-
- @Override
- public int hashCode()
- {
- return Objects.hash(bindAddress);
- }
-}
diff --git
a/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
b/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
index a8c948c25d..caebaa0c26 100644
--- a/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
@@ -135,7 +135,6 @@ import org.apache.cassandra.utils.FBUtilities;
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;
@@ -163,8 +162,6 @@ public class Instance extends IsolatedExecutor implements
IInvokableInstance
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;
diff --git
a/test/distributed/org/apache/cassandra/distributed/impl/IsolatedJmx.java
b/test/distributed/org/apache/cassandra/distributed/impl/IsolatedJmx.java
index 2fd4ec9647..41a722a3d1 100644
--- a/test/distributed/org/apache/cassandra/distributed/impl/IsolatedJmx.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/IsolatedJmx.java
@@ -32,6 +32,9 @@ import javax.management.remote.rmi.RMIConnectorServer;
import javax.management.remote.rmi.RMIJRMPServerImpl;
import com.google.common.util.concurrent.Uninterruptibles;
+
+import
org.apache.cassandra.distributed.shared.jmx.CollectingRMIServerSocketFactoryImpl;
+import org.apache.cassandra.distributed.shared.jmx.RMIClientSocketFactoryImpl;
import org.slf4j.Logger;
import org.apache.cassandra.distributed.api.IInstance;
@@ -39,7 +42,6 @@ import org.apache.cassandra.distributed.api.IInstanceConfig;
import org.apache.cassandra.distributed.shared.JMXUtil;
import org.apache.cassandra.utils.JMXServerUtils;
import org.apache.cassandra.utils.MBeanWrapper;
-import org.apache.cassandra.utils.RMIClientSocketFactoryImpl;
import sun.rmi.transport.tcp.TCPEndpoint;
import static
org.apache.cassandra.config.CassandraRelevantProperties.JAVA_RMI_DGC_LEASE_VALUE_IN_JVM_DTEST;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]