|
@@ -18,9 +18,6 @@
|
|
|
*/
|
|
|
package org.elasticsearch.transport;
|
|
|
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.function.Supplier;
|
|
|
import org.apache.lucene.store.AlreadyClosedException;
|
|
|
import org.elasticsearch.Version;
|
|
|
import org.elasticsearch.action.ActionListener;
|
|
@@ -68,7 +65,9 @@ import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Base64;
|
|
|
import java.util.Collections;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.concurrent.BrokenBarrierException;
|
|
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
@@ -79,6 +78,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.function.Function;
|
|
|
+import java.util.function.Supplier;
|
|
|
|
|
|
import static java.util.Collections.emptyMap;
|
|
|
import static java.util.Collections.emptySet;
|
|
@@ -163,7 +163,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
updateSeedNodes(connection, Arrays.asList(() -> seedNode));
|
|
|
assertTrue(service.nodeConnected(seedNode));
|
|
|
assertTrue(service.nodeConnected(discoverableNode));
|
|
@@ -204,7 +204,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
updateSeedNodes(connection, Arrays.asList(() -> seedNode));
|
|
|
assertTrue(service.nodeConnected(seedNode));
|
|
|
assertTrue(service.nodeConnected(discoverableNode));
|
|
@@ -256,7 +256,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
updateSeedNodes(connection, Arrays.asList(() -> seedNode));
|
|
|
assertTrue(service.nodeConnected(seedNode));
|
|
|
assertTrue(service.nodeConnected(discoverableNode));
|
|
@@ -285,7 +285,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- seedNodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ seedNodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
updateSeedNodes(connection, seedNodes);
|
|
|
assertTrue(service.nodeConnected(seedNode));
|
|
|
assertTrue(service.nodeConnected(discoverableNode));
|
|
@@ -312,7 +312,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
updateSeedNodes(connection, Arrays.asList(() -> seedNode));
|
|
|
assertTrue(service.nodeConnected(seedNode));
|
|
|
assertTrue(service.nodeConnected(discoverableNode));
|
|
@@ -362,7 +362,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE,
|
|
|
- n -> n.equals(rejectedNode) == false)) {
|
|
|
+ n -> n.equals(rejectedNode) == false, null)) {
|
|
|
updateSeedNodes(connection, Arrays.asList(() -> seedNode));
|
|
|
if (rejectedNode.equals(seedNode)) {
|
|
|
assertFalse(service.nodeConnected(seedNode));
|
|
@@ -422,7 +422,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
expectThrows(Exception.class, () -> updateSeedNodes(connection, Arrays.asList(() -> seedNode)));
|
|
|
assertFalse(service.nodeConnected(seedNode));
|
|
|
assertTrue(connection.assertNoRunningConnections());
|
|
@@ -485,7 +485,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
connection.addConnectedNode(seedNode);
|
|
|
for (DiscoveryNode node : knownNodes) {
|
|
|
final Transport.Connection transportConnection = connection.getConnection(node);
|
|
@@ -528,7 +528,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
CountDownLatch listenerCalled = new CountDownLatch(1);
|
|
|
AtomicReference<Exception> exceptionReference = new AtomicReference<>();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
ActionListener<Void> listener = ActionListener.wrap(x -> {
|
|
|
listenerCalled.countDown();
|
|
|
fail("expected exception");
|
|
@@ -565,7 +565,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.acceptIncomingRequests();
|
|
|
List<Supplier<DiscoveryNode>> nodes = Collections.singletonList(() -> seedNode);
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- nodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ nodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
if (randomBoolean()) {
|
|
|
updateSeedNodes(connection, nodes);
|
|
|
}
|
|
@@ -605,7 +605,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.acceptIncomingRequests();
|
|
|
List<Supplier<DiscoveryNode>> nodes = Collections.singletonList(() -> seedNode);
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- nodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ nodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
SearchRequest request = new SearchRequest("test-index");
|
|
|
Thread[] threads = new Thread[10];
|
|
|
for (int i = 0; i < threads.length; i++) {
|
|
@@ -659,7 +659,8 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Collections.singletonList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Collections.singletonList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE,
|
|
|
+ n -> true, null)) {
|
|
|
|
|
|
SearchRequest request = new SearchRequest("test-index");
|
|
|
ClusterSearchShardsRequest searchShardsRequest = new ClusterSearchShardsRequest("test-index")
|
|
@@ -769,7 +770,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- seedNodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ seedNodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
int numThreads = randomIntBetween(4, 10);
|
|
|
Thread[] threads = new Thread[numThreads];
|
|
|
CyclicBarrier barrier = new CyclicBarrier(numThreads);
|
|
@@ -848,7 +849,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- seedNodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ seedNodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
int numThreads = randomIntBetween(4, 10);
|
|
|
Thread[] threads = new Thread[numThreads];
|
|
|
CyclicBarrier barrier = new CyclicBarrier(numThreads + 1);
|
|
@@ -937,7 +938,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.acceptIncomingRequests();
|
|
|
int maxNumConnections = randomIntBetween(1, 5);
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- seedNodes, service, service.connectionManager(), maxNumConnections, n -> true)) {
|
|
|
+ seedNodes, service, service.connectionManager(), maxNumConnections, n -> true, null)) {
|
|
|
// test no nodes connected
|
|
|
RemoteConnectionInfo remoteConnectionInfo = assertSerialization(connection.getConnectionInfo());
|
|
|
assertNotNull(remoteConnectionInfo);
|
|
@@ -1084,7 +1085,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
assertFalse(service.nodeConnected(seedNode));
|
|
|
assertFalse(service.nodeConnected(discoverableNode));
|
|
|
assertTrue(connection.assertNoRunningConnections());
|
|
@@ -1133,7 +1134,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(() -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
if (randomBoolean()) {
|
|
|
updateSeedNodes(connection, Arrays.asList(() -> seedNode));
|
|
|
}
|
|
@@ -1181,7 +1182,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- seedNodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ seedNodes, service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
final int numGetThreads = randomIntBetween(4, 10);
|
|
|
final Thread[] getThreads = new Thread[numGetThreads];
|
|
|
final int numModifyingThreads = randomIntBetween(4, 10);
|
|
@@ -1271,7 +1272,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList( () -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList( () -> seedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
updateSeedNodes(connection, Arrays.asList(() -> seedNode));
|
|
|
assertTrue(service.nodeConnected(seedNode));
|
|
|
assertTrue(service.nodeConnected(discoverableNode));
|
|
@@ -1351,7 +1352,8 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
service.start();
|
|
|
service.acceptIncomingRequests();
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Collections.singletonList(() -> connectedNode), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Collections.singletonList(() -> connectedNode), service, service.getConnectionManager(),
|
|
|
+ Integer.MAX_VALUE, n -> true, null)) {
|
|
|
connection.addConnectedNode(connectedNode);
|
|
|
for (int i = 0; i < 10; i++) {
|
|
|
//always a direct connection as the remote node is already connected
|
|
@@ -1393,7 +1395,7 @@ public class RemoteClusterConnectionTests extends ESTestCase {
|
|
|
return seedNode;
|
|
|
};
|
|
|
try (RemoteClusterConnection connection = new RemoteClusterConnection(Settings.EMPTY, "test-cluster",
|
|
|
- Arrays.asList(seedSupplier), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true)) {
|
|
|
+ Arrays.asList(seedSupplier), service, service.getConnectionManager(), Integer.MAX_VALUE, n -> true, null)) {
|
|
|
updateSeedNodes(connection, Arrays.asList(seedSupplier));
|
|
|
// Closing connections leads to RemoteClusterConnection.ConnectHandler.collectRemoteNodes
|
|
|
// being called again so we try to resolve the same seed node's host twice
|