mirror of https://github.com/apache/cassandra
Merge branch 'cassandra-4.1' into cassandra-5.0
This commit is contained in:
commit
b4dcef7841
|
|
@ -534,7 +534,7 @@
|
|||
<dependency>
|
||||
<groupId>org.apache.cassandra</groupId>
|
||||
<artifactId>dtest-api</artifactId>
|
||||
<version>0.0.16</version>
|
||||
<version>0.0.18</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
5.0.7
|
||||
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)
|
||||
|
||||
5.0.6
|
||||
* Fix range queries on early-open BTI files (CASSANDRA-20976)
|
||||
* Avoid re-initializing underlying iterator in LazilyInitializedUnfilteredRowIterator after closing (CASSANDRA-20972)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,81 +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);
|
||||
}
|
||||
}
|
||||
|
|
@ -202,12 +202,6 @@ public abstract class AbstractCluster<I extends IInstance> implements ICluster<I
|
|||
withSharedClasses(SHARED_PREDICATE);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private B self()
|
||||
{
|
||||
return (B) this;
|
||||
}
|
||||
|
||||
public B withNodeProvisionStrategy(INodeProvisionStrategy.Strategy nodeProvisionStrategy)
|
||||
{
|
||||
this.nodeProvisionStrategy = nodeProvisionStrategy;
|
||||
|
|
@ -585,7 +579,7 @@ public abstract class AbstractCluster<I extends IInstance> implements ICluster<I
|
|||
}
|
||||
|
||||
@VisibleForTesting
|
||||
InstanceConfig createInstanceConfig(int nodeNum)
|
||||
public InstanceConfig createInstanceConfig(int nodeNum)
|
||||
{
|
||||
INodeProvisionStrategy provisionStrategy = nodeProvisionStrategy.create(subnet, portMap);
|
||||
Collection<String> tokens = tokenSupplier.tokens(nodeNum);
|
||||
|
|
|
|||
|
|
@ -1,88 +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);
|
||||
}
|
||||
}
|
||||
|
|
@ -31,15 +31,17 @@ import javax.management.remote.JMXServiceURL;
|
|||
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 com.google.common.util.concurrent.Uninterruptibles;
|
||||
import org.apache.cassandra.distributed.api.IInstance;
|
||||
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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue