This is an automated email from the ASF dual-hosted git repository.
ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 9d3f085606 IGNITE-19601 Remove port range from client configuration
(#2195)
9d3f085606 is described below
commit 9d3f085606dbbf3676ce6c0393048afb43a3a24b
Author: Pavel Tupitsyn <[email protected]>
AuthorDate: Thu Jun 15 17:03:16 2023 +0300
IGNITE-19601 Remove port range from client configuration (#2195)
Remove port range from:
* Server-side `ClientHandlerModule` configuration
* Java client configuration
* .NET client configuration
---
.../testframework/IntegrationTestBase.java | 11 +-
.../org/apache/ignite/internal/NodeConfig.java | 2 +
.../internal/cli/CliIntegrationTestBase.java | 3 +-
.../cli/commands/ItClusterCommandTest.java | 1 +
.../internal/rest/ItGeneratedRestClientTest.java | 5 +-
.../resources/hardcoded-ports-config.json | 3 +
.../apache/ignite/client/handler/TestServer.java | 1 -
.../ignite/client/handler/ClientHandlerModule.java | 31 +++--
.../ClientConnectorConfigurationSchema.java | 5 -
.../org/apache/ignite/client/IgniteClient.java | 3 +-
.../ignite/client/IgniteClientConfiguration.java | 16 +--
.../{HostAndPortRange.java => HostAndPort.java} | 125 ++++-----------------
.../ignite/internal/client/ReliableChannel.java | 15 +--
.../apache/ignite/client/AbstractClientTest.java | 14 +--
.../ignite/client/ClientAuthenticationTest.java | 5 +-
.../apache/ignite/client/ClientComputeTest.java | 6 +-
.../apache/ignite/client/ClientLoggingTest.java | 42 ++++---
.../apache/ignite/client/ClientMetricsTest.java | 16 +--
.../ignite/client/ClientPutGetBenchmark.java | 2 +-
.../apache/ignite/client/ConfigurationTest.java | 4 +-
.../org/apache/ignite/client/ConnectionTest.java | 12 +-
.../org/apache/ignite/client/DataStreamerTest.java | 2 +-
.../org/apache/ignite/client/HeartbeatTest.java | 8 +-
.../org/apache/ignite/client/MultiClusterTest.java | 13 +--
.../ignite/client/PartitionAwarenessTest.java | 8 +-
.../org/apache/ignite/client/ReconnectTest.java | 52 +++------
.../apache/ignite/client/RequestBalancingTest.java | 6 +-
.../org/apache/ignite/client/RetryPolicyTest.java | 2 +-
.../org/apache/ignite/client/SchemaUpdateTest.java | 4 +-
.../ignite/client/TestClientHandlerModule.java | 24 ++--
.../java/org/apache/ignite/client/TestServer.java | 27 +++--
...tAndPortRangeTest.java => HostAndPortTest.java} | 63 ++---------
.../java/org/apache/ignite/lang/ErrorGroups.java | 3 +
.../apache/ignite/jdbc/ItJdbcErrorsSelfTest.java | 2 +-
.../ignite/internal/jdbc/ConnectionProperties.java | 6 +-
.../internal/jdbc/ConnectionPropertiesImpl.java | 18 +--
.../ignite/internal/jdbc/JdbcConnection.java | 9 +-
.../dotnet/Apache.Ignite.Tests/EndpointTests.cs | 27 +----
.../Apache.Ignite/Internal/ClientFailoverSocket.cs | 9 +-
.../dotnet/Apache.Ignite/Internal/Endpoint.cs | 40 +------
.../java/org/apache/ignite/internal/Cluster.java | 11 +-
.../internal/ClusterPerTestIntegrationTest.java | 9 +-
.../cluster/management/ItClusterInitTest.java | 1 +
.../internal/compute/ItLogicalTopologyTest.java | 3 +-
.../zones/ItDistributionZonesFilterTest.java | 1 +
.../raftsnapshot/ItTableRaftSnapshotsTest.java | 3 +-
.../ignite/internal/rest/AbstractRestTestBase.java | 9 +-
.../org/apache/ignite/internal/rest/RestNode.java | 1 +
.../runner/app/AbstractSchemaChangeTest.java | 9 +-
.../internal/runner/app/ItDataSchemaSyncTest.java | 6 +-
.../app/ItIgniteInMemoryNodeRestartTest.java | 9 +-
.../runner/app/ItIgniteNodeRestartTest.java | 10 +-
.../ignite/internal/runner/app/ItIgnitionTest.java | 9 +-
.../internal/runner/app/ItTablesApiTest.java | 6 +-
.../runner/app/PlatformTestNodeRunner.java | 6 +-
.../app/client/ItAbstractThinClientTest.java | 2 +
.../sql/engine/ClusterPerClassIntegrationTest.java | 8 +-
.../ignite/internal/sqllogic/ItSqlLogicTest.java | 7 +-
.../org/apache/ignite/internal/ssl/ItSslTest.java | 24 ++--
59 files changed, 308 insertions(+), 471 deletions(-)
diff --git
a/modules/api/src/testFixtures/java/org/apache/ignite/internal/testframework/IntegrationTestBase.java
b/modules/api/src/testFixtures/java/org/apache/ignite/internal/testframework/IntegrationTestBase.java
index c0f66e1ba0..860e07b637 100644
---
a/modules/api/src/testFixtures/java/org/apache/ignite/internal/testframework/IntegrationTestBase.java
+++
b/modules/api/src/testFixtures/java/org/apache/ignite/internal/testframework/IntegrationTestBase.java
@@ -70,6 +70,8 @@ public class IntegrationTestBase extends
BaseIgniteAbstractTest {
private static final int BASE_PORT = 3344;
+ private static final int BASE_CLIENT_PORT = 10800;
+
/** Nodes bootstrap configuration pattern. */
private static final String NODE_BOOTSTRAP_CFG = "{\n"
+ " network: {\n"
@@ -78,7 +80,8 @@ public class IntegrationTestBase extends
BaseIgniteAbstractTest {
+ " nodeFinder:{\n"
+ " netClusterNodes: [ {} ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
/** Futures that are going to be completed when all nodes are started and
the cluster is initialized. */
@@ -101,7 +104,11 @@ public class IntegrationTestBase extends
BaseIgniteAbstractTest {
String nodeName = testNodeName(testInfo, i);
CLUSTER_NODE_NAMES.add(nodeName);
- String config =
IgniteStringFormatter.format(nodeBootstrapConfigTemplate(), BASE_PORT + i,
connectNodeAddr);
+ String config = IgniteStringFormatter.format(
+ nodeBootstrapConfigTemplate(),
+ BASE_PORT + i,
+ connectNodeAddr,
+ BASE_CLIENT_PORT + i);
NODE_CONFIGS.put(nodeName, config);
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/NodeConfig.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/NodeConfig.java
index 2329721cd6..cd533dd407 100644
---
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/NodeConfig.java
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/NodeConfig.java
@@ -39,6 +39,7 @@ public class NodeConfig {
+ " netClusterNodes: [ {} ]\n"
+ " },\n"
+ " },\n"
+ + " clientConnector.port: {} ,\n"
+ " rest: {"
+ " ssl: {\n"
+ " enabled: true,\n"
@@ -62,6 +63,7 @@ public class NodeConfig {
+ " },\n"
+ " },\n"
+ " clientConnector: {"
+ + " port: {},\n"
+ " ssl: {\n"
+ " enabled: true,\n"
+ " clientAuth: require,\n"
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/CliIntegrationTestBase.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/CliIntegrationTestBase.java
index df3508ef39..becb71c8cd 100644
---
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/CliIntegrationTestBase.java
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/CliIntegrationTestBase.java
@@ -62,7 +62,8 @@ public abstract class CliIntegrationTestBase extends
IntegrationTestBase {
+ " gossipInterval: 10\n"
+ " },\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItClusterCommandTest.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItClusterCommandTest.java
index 19c31e7303..24a5c5f998 100644
---
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItClusterCommandTest.java
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/ItClusterCommandTest.java
@@ -138,6 +138,7 @@ class ItClusterCommandTest extends AbstractCliTest {
String config =
Files.readString(Path.of("src/integrationTest/resources/hardcoded-ports-config.json"));
config = config.replaceAll("<NETWORK_PORT>",
String.valueOf(node.networkPort));
config = config.replaceAll("<REST_PORT>",
String.valueOf(node.restPort));
+ config = config.replaceAll("<CLIENT_PORT>",
String.valueOf(node.restPort + 7000));
config = config.replaceAll("<NET_CLUSTER_NODES>", netClusterNodes());
return config;
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/rest/ItGeneratedRestClientTest.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/rest/ItGeneratedRestClientTest.java
index ce0a0cb267..e10b3471c7 100644
---
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/rest/ItGeneratedRestClientTest.java
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/rest/ItGeneratedRestClientTest.java
@@ -96,6 +96,8 @@ public class ItGeneratedRestClientTest {
/** Start rest server port. */
private static final int BASE_REST_PORT = 10300;
+ private static final int BASE_CLIENT_PORT = 10800;
+
@WorkDirectory
private static Path WORK_DIR;
@@ -134,7 +136,8 @@ public class ItGeneratedRestClientTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ] \n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector.port: " + (BASE_CLIENT_PORT + nodeIdx) +
"\n"
+ "}";
}
diff --git
a/modules/cli/src/integrationTest/resources/hardcoded-ports-config.json
b/modules/cli/src/integrationTest/resources/hardcoded-ports-config.json
index 3873c574fb..c2d5d7c48f 100644
--- a/modules/cli/src/integrationTest/resources/hardcoded-ports-config.json
+++ b/modules/cli/src/integrationTest/resources/hardcoded-ports-config.json
@@ -9,5 +9,8 @@
"rest": {
"port": <REST_PORT>,
"portRange": 0
+ },
+ "clientConnector": {
+ "port": <CLIENT_PORT>
}
}
diff --git
a/modules/client-handler/src/integrationTest/java/org/apache/ignite/client/handler/TestServer.java
b/modules/client-handler/src/integrationTest/java/org/apache/ignite/client/handler/TestServer.java
index 053f34c20a..552806934a 100644
---
a/modules/client-handler/src/integrationTest/java/org/apache/ignite/client/handler/TestServer.java
+++
b/modules/client-handler/src/integrationTest/java/org/apache/ignite/client/handler/TestServer.java
@@ -97,7 +97,6 @@ public class TestServer {
clientConnectorConfig().change(
local -> local
.changePort(10800)
- .changePortRange(10)
.changeIdleTimeout(idleTimeout)
).join();
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientHandlerModule.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientHandlerModule.java
index bb91de61d2..a8fe8e1f79 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientHandlerModule.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientHandlerModule.java
@@ -44,6 +44,7 @@ import
org.apache.ignite.internal.network.ssl.SslContextProvider;
import
org.apache.ignite.internal.security.authentication.AuthenticationManager;
import org.apache.ignite.internal.sql.engine.QueryProcessor;
import org.apache.ignite.internal.table.IgniteTablesInternal;
+import org.apache.ignite.lang.ErrorGroups;
import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.lang.IgniteInternalException;
import org.apache.ignite.network.ClusterService;
@@ -217,12 +218,6 @@ public class ClientHandlerModule implements
IgniteComponent {
* @throws IgniteException When startup has failed.
*/
private ChannelFuture startEndpoint(ClientConnectorView configuration)
throws InterruptedException {
- int desiredPort = configuration.port();
- int portRange = configuration.portRange();
-
- int port = 0;
- Channel ch = null;
-
ServerBootstrap bootstrap = bootstrapFactory.createServerBootstrap();
// Initialize SslContext once on startup to avoid initialization on
each connection, and to fail in case of incorrect config.
@@ -256,26 +251,26 @@ public class ClientHandlerModule implements
IgniteComponent {
})
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS,
configuration.connectTimeout());
- for (int portCandidate = desiredPort; portCandidate <= desiredPort +
portRange; portCandidate++) {
- ChannelFuture bindRes = bootstrap.bind(portCandidate).await();
+ int port = configuration.port();
+ Channel ch = null;
- if (bindRes.isSuccess()) {
- ch = bindRes.channel();
+ ChannelFuture bindRes = bootstrap.bind(port).await();
- port = portCandidate;
- break;
- } else if (!(bindRes.cause() instanceof BindException)) {
- throw new IgniteException(bindRes.cause());
- }
+ if (bindRes.isSuccess()) {
+ ch = bindRes.channel();
+ } else if (!(bindRes.cause() instanceof BindException)) {
+ throw new IgniteException(
+ ErrorGroups.Common.INTERNAL_ERR,
+ "Failed to start thin client connector endpoint: " +
bindRes.cause().getMessage(),
+ bindRes.cause());
}
if (ch == null) {
- String msg = "Cannot start thin client connector endpoint. "
- + "All ports are in use [ports=[" + desiredPort + ", " +
(desiredPort + portRange) + "]]";
+ String msg = "Cannot start thin client connector endpoint. Port "
+ port + " is in use.";
LOG.debug(msg);
- throw new IgniteException(msg);
+ throw new IgniteException(ErrorGroups.Network.PORT_IN_USE_ERR,
msg);
}
if (LOG.isInfoEnabled()) {
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/configuration/ClientConnectorConfigurationSchema.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/configuration/ClientConnectorConfigurationSchema.java
index 889a2cba31..80bf5ee5e4 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/configuration/ClientConnectorConfigurationSchema.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/configuration/ClientConnectorConfigurationSchema.java
@@ -36,11 +36,6 @@ public class ClientConnectorConfigurationSchema {
@Value(hasDefault = true)
public final int port = 10800;
- /** TCP port range. */
- @Range(min = 0)
- @Value(hasDefault = true)
- public final int portRange = 100;
-
/** Connect timeout. */
@Range(min = 0)
@Value(hasDefault = true)
diff --git
a/modules/client/src/main/java/org/apache/ignite/client/IgniteClient.java
b/modules/client/src/main/java/org/apache/ignite/client/IgniteClient.java
index f108e2165c..53ce6488f1 100644
--- a/modules/client/src/main/java/org/apache/ignite/client/IgniteClient.java
+++ b/modules/client/src/main/java/org/apache/ignite/client/IgniteClient.java
@@ -112,8 +112,7 @@ public interface IgniteClient extends Ignite {
/**
* Sets the addresses of Ignite server nodes within a cluster. An
address can be an IP address or a hostname, with or without port.
- * If port is not set then Ignite will generate multiple addresses for
default port range. See {@link
- * IgniteClientConfiguration#DFLT_PORT}, {@link
IgniteClientConfiguration#DFLT_PORT_RANGE}.
+ * If port is not set then Ignite will use the default one - see
{@link IgniteClientConfiguration#DFLT_PORT}.
*
* @param addrs Addresses.
* @return This instance.
diff --git
a/modules/client/src/main/java/org/apache/ignite/client/IgniteClientConfiguration.java
b/modules/client/src/main/java/org/apache/ignite/client/IgniteClientConfiguration.java
index 4f93eb6625..a5f1f242dd 100644
---
a/modules/client/src/main/java/org/apache/ignite/client/IgniteClientConfiguration.java
+++
b/modules/client/src/main/java/org/apache/ignite/client/IgniteClientConfiguration.java
@@ -30,9 +30,6 @@ public interface IgniteClientConfiguration {
/** Default port. */
int DFLT_PORT = 10800;
- /** Default port range. */
- int DFLT_PORT_RANGE = 100;
-
/** Default socket connect timeout, in milliseconds. */
int DFLT_CONNECT_TIMEOUT = 5000;
@@ -60,8 +57,7 @@ public interface IgniteClientConfiguration {
/**
* Gets the addresses of Ignite server nodes within a cluster. An address
can be an IP address or a hostname, with or without port. If
- * port is not set then Ignite will generate multiple addresses for
default port range. See {@link IgniteClientConfiguration#DFLT_PORT},
- * {@link IgniteClientConfiguration#DFLT_PORT_RANGE}.
+ * port is not set then Ignite will use {@link
IgniteClientConfiguration#DFLT_PORT}.
*
* <p>Providing addresses of multiple nodes in the cluster will improve
performance: Ignite will balance requests across all
* connections, and use partition awareness to send key-based requests
directly to the primary node.
@@ -128,20 +124,20 @@ public interface IgniteClientConfiguration {
@Nullable Executor asyncContinuationExecutor();
/**
- * Gets the heartbeat message interval, in milliseconds. Default is
<code>30_000</code>.
+ * Gets the heartbeat message interval, in milliseconds. Default is {@code
30_000}.
*
* <p>When server-side idle timeout is not zero, effective heartbeat
- * interval is set to <code>min(heartbeatInterval, idleTimeout / 3)</code>.
+ * interval is set to {@code min(heartbeatInterval, idleTimeout / 3)}.
*
* <p>When thin client connection is idle (no operations are performed),
heartbeat messages are sent periodically
* to keep the connection alive and detect potential half-open state.
*
* @return Heartbeat interval.
*/
- public long heartbeatInterval();
+ long heartbeatInterval();
/**
- * Gets the heartbeat message timeout, in milliseconds. Default is
<code>5000</code>.
+ * Gets the heartbeat message timeout, in milliseconds. Default is {@code
5000}.
*
* <p>When a server does not respond to a heartbeat within the specified
timeout, client will close the connection.
*
@@ -150,7 +146,7 @@ public interface IgniteClientConfiguration {
*
* @return Heartbeat interval.
*/
- public long heartbeatTimeout();
+ long heartbeatTimeout();
/**
* Returns the logger factory. This factory will be used to create a
logger instance when needed.
diff --git
a/modules/client/src/main/java/org/apache/ignite/internal/client/HostAndPortRange.java
b/modules/client/src/main/java/org/apache/ignite/internal/client/HostAndPort.java
similarity index 59%
rename from
modules/client/src/main/java/org/apache/ignite/internal/client/HostAndPortRange.java
rename to
modules/client/src/main/java/org/apache/ignite/internal/client/HostAndPort.java
index cd42f26d0c..fb2691b766 100644
---
a/modules/client/src/main/java/org/apache/ignite/internal/client/HostAndPortRange.java
+++
b/modules/client/src/main/java/org/apache/ignite/internal/client/HostAndPort.java
@@ -23,9 +23,9 @@ import java.net.UnknownHostException;
import org.apache.ignite.lang.IgniteException;
/**
- * Represents address along with port range.
+ * Represents address along with port.
*/
-public class HostAndPortRange implements Serializable {
+public class HostAndPort implements Serializable {
/** Serial version uid. */
private static final long serialVersionUID = 0L;
@@ -33,30 +33,22 @@ public class HostAndPortRange implements Serializable {
private final String host;
/** Port from. */
- private final int portFrom;
-
- /** Port to. */
- private final int portTo;
+ private final int port;
/**
* Parse string into host and port pair.
*
* @param addrStr String.
- * @param dfltPortFrom Default port from.
- * @param dfltPortTo Default port to.
+ * @param dfltPort Default port.
* @param errMsgPrefix Error message prefix.
* @return Result.
* @throws IgniteException If failed.
*/
- public static HostAndPortRange parse(String addrStr, int dfltPortFrom, int
dfltPortTo, String errMsgPrefix)
+ public static HostAndPort parse(String addrStr, int dfltPort, String
errMsgPrefix)
throws IgniteException {
- assert dfltPortFrom <= dfltPortTo;
-
String host;
-
String portStr;
- int portFrom;
- int portTo;
+ int port;
if (addrStr == null || addrStr.isEmpty()) {
throw createParseError(addrStr, errMsgPrefix, "Address is empty");
@@ -72,14 +64,10 @@ public class HostAndPortRange implements Serializable {
host = addrStr.substring(1, hostEndIdx);
if (hostEndIdx == addrStr.length() - 1) { // no port specified,
using default
- portFrom = dfltPortFrom;
- portTo = dfltPortTo;
+ port = dfltPort;
} else { // port specified
portStr = addrStr.substring(hostEndIdx + 2);
-
- int[] ports = verifyPortStr(addrStr, errMsgPrefix, portStr);
- portFrom = ports[0];
- portTo = ports[1];
+ port = parsePort(portStr, addrStr, errMsgPrefix);
}
} else { // IPv4 || IPv6 without port || empty host
final int colIdx = addrStr.lastIndexOf(':');
@@ -89,69 +77,25 @@ public class HostAndPortRange implements Serializable {
try {
Inet6Address.getByName(addrStr);
host = addrStr;
- portFrom = dfltPortFrom;
- portTo = dfltPortTo;
+ port = dfltPort;
} catch (UnknownHostException e) {
throw createParseError(addrStr, errMsgPrefix, "IPv6 is
incorrect", e);
}
} else {
host = addrStr.substring(0, colIdx);
portStr = addrStr.substring(colIdx + 1);
- int[] ports = verifyPortStr(addrStr, errMsgPrefix,
portStr);
- portFrom = ports[0];
- portTo = ports[1];
+ port = parsePort(portStr, addrStr, errMsgPrefix);
}
} else if (colIdx == 0) {
throw createParseError(addrStr, errMsgPrefix, "Host name is
empty");
} else { // Port is not specified, use defaults.
host = addrStr;
- portFrom = dfltPortFrom;
- portTo = dfltPortTo;
+ port = dfltPort;
}
}
- return new HostAndPortRange(host, portFrom, portTo);
- }
-
- /**
- * Verifies string containing single port or ports range.
- *
- * @param addrStr Address String.
- * @param errMsgPrefix Error message prefix.
- * @param portStr Port or port range string.
- * @return Array of int[portFrom, portTo].
- * @throws IgniteException If failed.
- */
- private static int[] verifyPortStr(String addrStr, String errMsgPrefix,
String portStr)
- throws IgniteException {
- String portFromStr;
- String portToStr;
-
- if (portStr == null || portStr.isEmpty()) {
- throw createParseError(addrStr, errMsgPrefix, "port range is not
specified");
- }
-
- int portRangeIdx = portStr.indexOf("..");
-
- if (portRangeIdx >= 0) {
- // Port range is specified.
- portFromStr = portStr.substring(0, portRangeIdx);
- portToStr = portStr.substring(portRangeIdx + 2);
- } else {
- // Single port is specified.
- portFromStr = portStr;
- portToStr = portStr;
- }
-
- int portFrom = parsePort(portFromStr, addrStr, errMsgPrefix);
- int portTo = parsePort(portToStr, addrStr, errMsgPrefix);
-
- if (portFrom > portTo) {
- throw createParseError(addrStr, errMsgPrefix, "start port cannot
be less than end port");
- }
-
- return new int[]{portFrom, portTo};
+ return new HostAndPort(host, port);
}
/**
@@ -168,12 +112,12 @@ public class HostAndPortRange implements Serializable {
int port = Integer.parseInt(portStr);
if (port <= 0 || port > 65535) {
- throw createParseError(addrStr, errMsgPrefix, "port range
contains invalid port " + portStr);
+ throw createParseError(addrStr, errMsgPrefix, "invalid port "
+ portStr);
}
return port;
} catch (NumberFormatException ignored) {
- throw createParseError(addrStr, errMsgPrefix, "port range contains
invalid port " + portStr);
+ throw createParseError(addrStr, errMsgPrefix, "invalid port " +
portStr);
}
}
@@ -208,24 +152,11 @@ public class HostAndPortRange implements Serializable {
* @param host Host.
* @param port Port.
*/
- public HostAndPortRange(String host, int port) {
- this(host, port, port);
- }
-
- /**
- * Constructor.
- *
- * @param host Host.
- * @param portFrom Port from.
- * @param portTo Port to.
- */
- public HostAndPortRange(String host, int portFrom, int portTo) {
+ public HostAndPort(String host, int port) {
assert host != null && !host.isEmpty();
- assert portFrom <= portTo && portFrom > 0 && portTo < 65535;
this.host = host;
- this.portFrom = portFrom;
- this.portTo = portTo;
+ this.port = port;
}
/**
@@ -242,26 +173,17 @@ public class HostAndPortRange implements Serializable {
*
* @return Port from.
*/
- public int portFrom() {
- return portFrom;
- }
-
- /**
- * Returns port to.
- *
- * @return Port to.
- */
- public int portTo() {
- return portTo;
+ public int port() {
+ return port;
}
/** {@inheritDoc} */
@Override
public boolean equals(Object o) {
- if (o instanceof HostAndPortRange) {
- HostAndPortRange other = (HostAndPortRange) o;
+ if (o instanceof HostAndPort) {
+ HostAndPort other = (HostAndPort) o;
- return host.equals(other.host) && portFrom == other.portFrom &&
portTo == other.portTo;
+ return host.equals(other.host) && port == other.port;
} else {
return false;
}
@@ -272,8 +194,7 @@ public class HostAndPortRange implements Serializable {
public int hashCode() {
int res = host.hashCode();
- res = 31 * res + portFrom;
- res = 31 * res + portTo;
+ res = 31 * res + port;
return res;
}
@@ -281,6 +202,6 @@ public class HostAndPortRange implements Serializable {
/** {@inheritDoc} */
@Override
public String toString() {
- return host + ":" + (portFrom == portTo ? portFrom : portFrom + ".." +
portTo);
+ return host + ":" + port;
}
}
diff --git
a/modules/client/src/main/java/org/apache/ignite/internal/client/ReliableChannel.java
b/modules/client/src/main/java/org/apache/ignite/internal/client/ReliableChannel.java
index 1ae7b118ab..7513ecdfcb 100644
---
a/modules/client/src/main/java/org/apache/ignite/internal/client/ReliableChannel.java
+++
b/modules/client/src/main/java/org/apache/ignite/internal/client/ReliableChannel.java
@@ -44,7 +44,6 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.stream.Collectors;
-import java.util.stream.IntStream;
import org.apache.ignite.client.ClientOperationType;
import org.apache.ignite.client.IgniteClientConfiguration;
import org.apache.ignite.client.IgniteClientConnectionException;
@@ -288,22 +287,14 @@ public final class ReliableChannel implements
AutoCloseable {
throw new IgniteException(CONFIGURATION_ERR, "Empty addresses");
}
- Collection<HostAndPortRange> ranges = new ArrayList<>(addrs.length);
+ Collection<HostAndPort> ranges = new ArrayList<>(addrs.length);
for (String a : addrs) {
- ranges.add(HostAndPortRange.parse(
- a,
- IgniteClientConfiguration.DFLT_PORT,
- IgniteClientConfiguration.DFLT_PORT +
IgniteClientConfiguration.DFLT_PORT_RANGE,
- "Failed to parse Ignite server address"
- ));
+ ranges.add(HostAndPort.parse(a,
IgniteClientConfiguration.DFLT_PORT, "Failed to parse Ignite server address"));
}
return ranges.stream()
- .flatMap(r -> IntStream
- .rangeClosed(r.portFrom(), r.portTo()).boxed()
- .map(p -> InetSocketAddress.createUnresolved(r.host(),
p))
- )
+ .map(p -> InetSocketAddress.createUnresolved(p.host(),
p.port()))
.collect(Collectors.toMap(a -> a, a -> 1, Integer::sum));
}
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/AbstractClientTest.java
b/modules/client/src/test/java/org/apache/ignite/client/AbstractClientTest.java
index 681143c32a..51dc45ddc8 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/AbstractClientTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/AbstractClientTest.java
@@ -61,7 +61,7 @@ public abstract class AbstractClientTest {
server = new FakeIgnite("server-1");
- testServer = startServer(10800, 10, 0, server);
+ testServer = startServer(0, server);
serverPort = testServer.port();
@@ -112,39 +112,31 @@ public abstract class AbstractClientTest {
/**
* Returns server.
*
- * @param port Port.
- * @param portRange Port range.
* @param idleTimeout Idle timeout.
* @param ignite Ignite.
* @return Server.
*/
public static TestServer startServer(
- int port,
- int portRange,
long idleTimeout,
Ignite ignite
) {
- return startServer(port, portRange, idleTimeout, ignite, null);
+ return startServer(idleTimeout, ignite, null);
}
/**
* Returns server.
*
- * @param port Port.
- * @param portRange Port range.
* @param idleTimeout Idle timeout.
* @param ignite Ignite.
* @param nodeName Node name.
* @return Server.
*/
public static TestServer startServer(
- int port,
- int portRange,
long idleTimeout,
Ignite ignite,
String nodeName
) {
- return new TestServer(port, portRange, idleTimeout, ignite, null,
null, nodeName, clusterId, null);
+ return new TestServer(idleTimeout, ignite, null, null, nodeName,
clusterId, null, null);
}
/**
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ClientAuthenticationTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ClientAuthenticationTest.java
index 234276e0d7..6ce0ae99f8 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/ClientAuthenticationTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/ClientAuthenticationTest.java
@@ -106,15 +106,14 @@ public class ClientAuthenticationTest {
@NotNull
private TestServer startServer(boolean basicAuthn) {
var server = new TestServer(
- 10800,
- 10,
1000,
new FakeIgnite(),
null,
null,
null,
UUID.randomUUID(),
- authenticationConfiguration);
+ authenticationConfiguration,
+ null);
if (basicAuthn) {
authenticationConfiguration.change(change -> {
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ClientComputeTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ClientComputeTest.java
index d090b6e79b..3d811918cb 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/ClientComputeTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/ClientComputeTest.java
@@ -164,8 +164,8 @@ public class ClientComputeTest {
var clusterId = UUID.randomUUID();
- server1 = new TestServer(10900, 10, 0, ignite, shouldDropConnection,
null, "s1", clusterId, null);
- server2 = new TestServer(10910, 10, 0, ignite, shouldDropConnection,
null, "s2", clusterId, null);
- server3 = new TestServer(10920, 10, 0, ignite, shouldDropConnection,
null, "s3", clusterId, null);
+ server1 = new TestServer(0, ignite, shouldDropConnection, null, "s1",
clusterId, null, null);
+ server2 = new TestServer(0, ignite, shouldDropConnection, null, "s2",
clusterId, null, null);
+ server3 = new TestServer(0, ignite, shouldDropConnection, null, "s3",
clusterId, null, null);
}
}
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ClientLoggingTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ClientLoggingTest.java
index f24607a92e..6a2129769c 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/ClientLoggingTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/ClientLoggingTest.java
@@ -23,10 +23,12 @@ import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import java.util.ArrayList;
import org.apache.ignite.client.fakes.FakeIgnite;
import org.apache.ignite.client.fakes.FakeIgniteTables;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.LoggerFactory;
+import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
@@ -50,13 +52,13 @@ public class ClientLoggingTest {
FakeIgnite ignite1 = new FakeIgnite();
((FakeIgniteTables) ignite1.tables()).createTable("t");
- server = startServer(10950, ignite1);
+ server = startServer(ignite1, 10901);
var loggerFactory1 = new TestLoggerFactory("client1");
var loggerFactory2 = new TestLoggerFactory("client2");
- var client1 = createClient(loggerFactory1);
- var client2 = createClient(loggerFactory2);
+ var client1 = createClient(loggerFactory1, 10901, 10902);
+ var client2 = createClient(loggerFactory2, 10901, 10902);
assertEquals("t", client1.tables().tables().get(0).name());
assertEquals("t", client2.tables().tables().get(0).name());
@@ -66,7 +68,7 @@ public class ClientLoggingTest {
FakeIgnite ignite2 = new FakeIgnite();
((FakeIgniteTables) ignite2.tables()).createTable("t2");
- server2 = startServer(10951, ignite2);
+ server2 = startServer(ignite2, 10902);
assertEquals("t2", client1.tables().tables().get(0).name());
assertEquals("t2", client2.tables().tables().get(0).name());
@@ -83,33 +85,37 @@ public class ClientLoggingTest {
FakeIgnite ignite = new FakeIgnite();
((FakeIgniteTables) ignite.tables()).createTable("t");
- server = startServer(10950, ignite);
- server2 = startServer(10955, ignite);
+ server = startServer(ignite, null);
+ server2 = startServer(ignite, null);
var loggerFactory = new TestLoggerFactory("c");
- try (var client = createClient(loggerFactory)) {
+ try (var client = IgniteClient.builder()
+ .addresses("127.0.0.1:" + server.port(), "127.0.0.1:" +
server2.port(), "127.0.0.1:43210")
+ .loggerFactory(loggerFactory)
+ .build()) {
client.tables().tables();
client.tables().table("t");
loggerFactory.waitForLogContains("Connection established", 5000);
- loggerFactory.waitForLogContains("c:Sending request [opCode=3,
remoteAddress=127.0.0.1:1095", 5000);
- loggerFactory.waitForLogContains("c:Failed to establish connection
to 127.0.0.1:1095", 5000);
+ loggerFactory.waitForLogContains("c:Sending request [opCode=3,
remoteAddress=127.0.0.1:", 5000);
+ loggerFactory.waitForLogContains("c:Failed to establish connection
to 127.0.0.1:43210", 5000);
}
}
- private static TestServer startServer(int port, FakeIgnite ignite) {
- return AbstractClientTest.startServer(
- port,
- 10,
- 0,
- ignite
- );
+ private static TestServer startServer(FakeIgnite ignite, @Nullable Integer
port) {
+ return new TestServer(0, ignite, null, null, null,
AbstractClientTest.clusterId, null, port);
}
- private static IgniteClient createClient(LoggerFactory loggerFactory) {
+ private static IgniteClient createClient(LoggerFactory loggerFactory,
int... ports) {
+ var addrs = new ArrayList<String>();
+
+ for (int port : ports) {
+ addrs.add("127.0.0.1:" + port);
+ }
+
return IgniteClient.builder()
- .addresses("127.0.0.1:10950..10960")
+ .addresses(addrs.toArray(new String[0]))
.loggerFactory(loggerFactory)
.build();
}
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ClientMetricsTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ClientMetricsTest.java
index aa285b372c..b2c7a95537 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/ClientMetricsTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/ClientMetricsTest.java
@@ -45,7 +45,7 @@ public class ClientMetricsTest {
@ParameterizedTest
@ValueSource(booleans = {true, false})
public void testConnectionMetrics(boolean gracefulDisconnect) throws
Exception {
- server = AbstractClientTest.startServer(10800, 10, 1000, new
FakeIgnite());
+ server = AbstractClientTest.startServer(1000, new FakeIgnite());
client = clientBuilder().build();
ClientMetricSource metrics = metrics();
@@ -72,14 +72,13 @@ public class ClientMetricsTest {
Function<Integer, Boolean> shouldDropConnection = requestIdx ->
requestIdx == 0;
Function<Integer, Integer> responseDelay = idx -> idx > 1 ? 500 : 0;
server = new TestServer(
- 10800,
- 10,
1000,
new FakeIgnite(),
shouldDropConnection,
responseDelay,
null,
AbstractClientTest.clusterId,
+ null,
null
);
client = clientBuilder()
@@ -98,14 +97,13 @@ public class ClientMetricsTest {
AtomicInteger counter = new AtomicInteger();
Function<Integer, Boolean> shouldDropConnection = requestIdx ->
counter.incrementAndGet() < 3; // Fail 2 handshakes.
server = new TestServer(
- 10800,
- 10,
1000,
new FakeIgnite(),
shouldDropConnection,
null,
null,
AbstractClientTest.clusterId,
+ null,
null
);
@@ -120,14 +118,13 @@ public class ClientMetricsTest {
Function<Integer, Boolean> shouldDropConnection = requestIdx -> false;
Function<Integer, Integer> responseDelay = idx ->
counter.incrementAndGet() == 1 ? 500 : 0;
server = new TestServer(
- 10800,
- 10,
1000,
new FakeIgnite(),
shouldDropConnection,
responseDelay,
null,
AbstractClientTest.clusterId,
+ null,
null
);
client = clientBuilder()
@@ -144,14 +141,13 @@ public class ClientMetricsTest {
Function<Integer, Boolean> shouldDropConnection = requestIdx ->
requestIdx == 5;
Function<Integer, Integer> responseDelay = idx -> idx == 4 ? 1000 : 0;
server = new TestServer(
- 10800,
- 10,
1000,
new FakeIgnite(),
shouldDropConnection,
responseDelay,
null,
AbstractClientTest.clusterId,
+ null,
null
);
client = clientBuilder().build();
@@ -203,7 +199,7 @@ public class ClientMetricsTest {
@Test
public void testBytesSentReceived() {
- server = AbstractClientTest.startServer(10800, 10, 1000, new
FakeIgnite());
+ server = AbstractClientTest.startServer(1000, new FakeIgnite());
client = clientBuilder().build();
assertEquals(15, metrics().bytesSent());
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ClientPutGetBenchmark.java
b/modules/client/src/test/java/org/apache/ignite/client/ClientPutGetBenchmark.java
index a7e3dd42b1..d245013e67 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/ClientPutGetBenchmark.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/ClientPutGetBenchmark.java
@@ -79,7 +79,7 @@ public class ClientPutGetBenchmark {
ignite = new FakeIgnite("server-1");
((FakeIgniteTables) ignite.tables()).createTable(DEFAULT_TABLE);
- testServer = new TestServer(10800, 10, 1000, ignite);
+ testServer = new TestServer(1000, ignite);
client = IgniteClient.builder()
.addresses("127.0.0.1:" + testServer.port())
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ConfigurationTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ConfigurationTest.java
index 4a775f3512..4e5f7cc244 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/ConfigurationTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/ConfigurationTest.java
@@ -58,7 +58,7 @@ public class ConfigurationTest extends AbstractClientTest {
assertThat(
ex.getMessage(),
- containsString("Failed to parse Ignite server address (port
range contains invalid port 70000): 127.0.0.1:70000"));
+ containsString("Failed to parse Ignite server address (invalid
port 70000): 127.0.0.1:70000"));
}
@Test
@@ -161,7 +161,7 @@ public class ConfigurationTest extends AbstractClientTest {
public void testCustomAsyncContinuationExecutor() throws Exception {
Function<Integer, Integer> responseDelay = x -> 50;
- try (var testServer = new TestServer(10900, 10, 0, server, x -> false,
responseDelay, "n2", clusterId, null)) {
+ try (var testServer = new TestServer(0, server, x -> false,
responseDelay, "n2", clusterId, null, null)) {
ExecutorService executor = Executors.newSingleThreadExecutor();
var builderThreadName = new AtomicReference<String>();
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ConnectionTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ConnectionTest.java
index de16f6a8aa..00b66af91e 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ConnectionTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ConnectionTest.java
@@ -53,6 +53,16 @@ public class ConnectionTest extends AbstractClientTest {
testConnection("127.0.0.1:" + serverPort);
}
+ @Test
+ public void testDefaultClientConfig() throws Exception {
+ try (var ignored = new TestServer(0, new FakeIgnite(), null, null,
"abc", clusterId, null, 10800)) {
+ IgniteClient.builder()
+ .addresses("localhost")
+ .build()
+ .close();
+ }
+ }
+
@Test
public void testInvalidNodeAddresses() {
var ex = assertThrows(IgniteClientConnectionException.class,
@@ -81,7 +91,7 @@ public class ConnectionTest extends AbstractClientTest {
public void testNoResponseFromServerWithinConnectTimeoutThrowsException()
throws Exception {
Function<Integer, Integer> responseDelay = x -> 500;
- try (var srv = new TestServer(10800, 10, 300, new FakeIgnite(), x ->
false, responseDelay, null, UUID.randomUUID(), null)) {
+ try (var srv = new TestServer(300, new FakeIgnite(), x -> false,
responseDelay, null, UUID.randomUUID(), null, null)) {
Builder builder = IgniteClient.builder()
.addresses("127.0.0.1:" + srv.port())
.retryPolicy(new RetryLimitPolicy().retryLimit(1))
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/DataStreamerTest.java
b/modules/client/src/test/java/org/apache/ignite/client/DataStreamerTest.java
index 8c2564ad51..063a027e45 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/DataStreamerTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/DataStreamerTest.java
@@ -290,7 +290,7 @@ public class DataStreamerTest extends
AbstractClientTableTest {
private FakeIgnite startTestServer2(Function<Integer, Boolean>
shouldDropConnection, Function<Integer, Integer> responseDelay) {
var ignite2 = new FakeIgnite("server-2");
- testServer2 = new TestServer(10900, 10, 10_000, ignite2,
shouldDropConnection, responseDelay, null, UUID.randomUUID(), null);
+ testServer2 = new TestServer(10_000, ignite2, shouldDropConnection,
responseDelay, null, UUID.randomUUID(), null, null);
return ignite2;
}
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/HeartbeatTest.java
b/modules/client/src/test/java/org/apache/ignite/client/HeartbeatTest.java
index 40776b15be..5e3cdb8d8b 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/HeartbeatTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/HeartbeatTest.java
@@ -34,7 +34,7 @@ import org.junit.jupiter.api.Test;
public class HeartbeatTest {
@Test
public void testHeartbeatLongerThanIdleTimeoutCausesDisconnect() throws
Exception {
- try (var srv = new TestServer(10800, 10, 50, new FakeIgnite())) {
+ try (var srv = new TestServer(50, new FakeIgnite())) {
int srvPort = srv.port();
var loggerFactory = new TestLoggerFactory("client");
@@ -54,7 +54,7 @@ public class HeartbeatTest {
@Test
public void testHeartbeatShorterThanIdleTimeoutKeepsConnectionAlive()
throws Exception {
- try (var srv = new TestServer(10800, 10, 300, new FakeIgnite())) {
+ try (var srv = new TestServer(300, new FakeIgnite())) {
int srvPort = srv.port();
Builder builder = IgniteClient.builder()
@@ -72,7 +72,7 @@ public class HeartbeatTest {
@SuppressWarnings("ThrowableNotThrown")
@Test
public void testInvalidHeartbeatIntervalThrows() throws Exception {
- try (var srv = new TestServer(10800, 10, 300, new FakeIgnite())) {
+ try (var srv = new TestServer(300, new FakeIgnite())) {
Builder builder = IgniteClient.builder()
.addresses("127.0.0.1:" + srv.port())
@@ -87,7 +87,7 @@ public class HeartbeatTest {
Function<Integer, Integer> responseDelayFunc = requestCount ->
requestCount > 1 ? 500 : 0;
var loggerFactory = new TestLoggerFactory("client");
- try (var srv = new TestServer(10800, 10, 300, new FakeIgnite(), x ->
false, responseDelayFunc, null, UUID.randomUUID(), null)) {
+ try (var srv = new TestServer(300, new FakeIgnite(), x -> false,
responseDelayFunc, null, UUID.randomUUID(), null, null)) {
int srvPort = srv.port();
Builder builder = IgniteClient.builder()
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/MultiClusterTest.java
b/modules/client/src/test/java/org/apache/ignite/client/MultiClusterTest.java
index 94db576399..a6d5182692 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/MultiClusterTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/MultiClusterTest.java
@@ -48,8 +48,8 @@ public class MultiClusterTest {
@BeforeEach
void setUp() {
- server1 = new TestServer(10900, 10, 0, new FakeIgnite(), null, null,
"s1", clusterId1, null);
- server2 = new TestServer(10900, 10, 0, new FakeIgnite(), null, null,
"s2", clusterId2, null);
+ server1 = new TestServer(0, new FakeIgnite(), null, null, "s1",
clusterId1, null, null);
+ server2 = new TestServer(0, new FakeIgnite(), null, null, "s2",
clusterId2, null, null);
}
@AfterEach
@@ -72,17 +72,16 @@ public class MultiClusterTest {
assertEquals(1, client.connections().size());
String err = getFailedConnectionEntry(loggerFactory);
- String expectedErr = "Cluster ID mismatch: expected=" + clusterId2
+ ", actual=" + clusterId1;
-
- assertThat(err, CoreMatchers.containsString(expectedErr));
+ assertThat(err, CoreMatchers.containsString("Cluster ID
mismatch"));
}
}
@Test
public void testReconnectToDifferentClusterFails()
throws Exception {
+ int port = server1.port();
Builder builder = IgniteClient.builder()
- .addresses("127.0.0.1:" + server1.port());
+ .addresses("127.0.0.1:" + port);
server2.close();
@@ -90,7 +89,7 @@ public class MultiClusterTest {
client.tables().tables();
server1.close();
- server1 = new TestServer(10900, 10, 0, new FakeIgnite(), null,
null, "s1", clusterId2, null);
+ server1 = new TestServer(0, new FakeIgnite(), null, null, "s1",
clusterId2, null, port);
IgniteClientConnectionException ex =
(IgniteClientConnectionException) assertThrowsWithCause(
() -> client.tables().tables(),
IgniteClientConnectionException.class, "Cluster ID mismatch");
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/PartitionAwarenessTest.java
b/modules/client/src/test/java/org/apache/ignite/client/PartitionAwarenessTest.java
index 44bd08aa63..8d08008a26 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/PartitionAwarenessTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/PartitionAwarenessTest.java
@@ -76,7 +76,7 @@ public class PartitionAwarenessTest extends
AbstractClientTest {
ResourceLeakDetector.setLevel(ResourceLeakDetector.Level.PARANOID);
server2 = new FakeIgnite("server-2");
- testServer2 = startServer(10800, 10, 0, server2, "server-2");
+ testServer2 = new TestServer(0, server2, null, null, "server-2",
clusterId, null, serverPort + 1);
var clientBuilder = IgniteClient.builder()
.addresses("127.0.0.1:" + serverPort, "127.0.0.1:" +
testServer2.port())
@@ -153,9 +153,9 @@ public class PartitionAwarenessTest extends
AbstractClientTest {
RecordView<Tuple> recordView = defaultTable().recordView();
var tx = client2.transactions().begin();
- assertOpOnNode("server-2", "get", x -> recordView.get(tx,
Tuple.create().set("ID", 0L)));
- assertOpOnNode("server-2", "get", x -> recordView.get(tx,
Tuple.create().set("ID", 1L)));
- assertOpOnNode("server-2", "get", x -> recordView.get(tx,
Tuple.create().set("ID", 2L)));
+ assertOpOnNode("server-1", "get", x -> recordView.get(tx,
Tuple.create().set("ID", 0L)));
+ assertOpOnNode("server-1", "get", x -> recordView.get(tx,
Tuple.create().set("ID", 1L)));
+ assertOpOnNode("server-1", "get", x -> recordView.get(tx,
Tuple.create().set("ID", 2L)));
}
@ParameterizedTest
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ReconnectTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ReconnectTest.java
index d91faa53d0..348e25f04f 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ReconnectTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ReconnectTest.java
@@ -22,6 +22,7 @@ import static
org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.apache.ignite.Ignite;
import org.apache.ignite.client.IgniteClient.Builder;
import org.apache.ignite.client.fakes.FakeIgnite;
import org.apache.ignite.client.fakes.FakeIgniteTables;
@@ -53,14 +54,10 @@ public class ReconnectTest {
FakeIgnite ignite1 = new FakeIgnite();
((FakeIgniteTables) ignite1.tables()).createTable("t");
- server = AbstractClientTest.startServer(
- 10900,
- 10,
- 0,
- ignite1);
+ server = new TestServer(0, ignite1, null, null, null,
AbstractClientTest.clusterId, null, 10905);
var client = IgniteClient.builder()
- .addresses("127.0.0.1:10900..10910", "127.0.0.1:10950..10960")
+ .addresses("127.0.0.1:10905", "127.0.0.1:10950",
"127.0.0.1:10960")
.retryPolicy(new RetryLimitPolicy().retryLimit(100))
.build();
@@ -71,11 +68,7 @@ public class ReconnectTest {
FakeIgnite ignite2 = new FakeIgnite();
((FakeIgniteTables) ignite2.tables()).createTable("t2");
- server2 = AbstractClientTest.startServer(
- 10950,
- 10,
- 0,
- ignite2);
+ server2 = new TestServer(0, ignite2, null, null, null,
AbstractClientTest.clusterId, null, 10950);
assertEquals("t2", client.tables().tables().get(0).name());
}
@@ -86,14 +79,10 @@ public class ReconnectTest {
FakeIgnite ignite1 = new FakeIgnite();
((FakeIgniteTables) ignite1.tables()).createTable("t");
- server = AbstractClientTest.startServer(
- 10900,
- 10,
- 0,
- ignite1);
+ server = AbstractClientTest.startServer(0, ignite1);
var client = IgniteClient.builder()
- .addresses("127.0.0.1:10900..10910", "127.0.0.1:10950..10960")
+ .addresses("127.0.0.1:" + server.port(), "127.0.0.1:10960")
.build();
assertEquals("t", client.tables().tables().get(0).name());
@@ -109,7 +98,7 @@ public class ReconnectTest {
startTwoServers();
Builder builder = IgniteClient.builder()
- .addresses("127.0.0.1:10900..10902")
+ .addresses("127.0.0.1:10901", "127.0.0.1:10902",
"127.0.0.1:10903")
.reconnectInterval(reconnectEnabled ? 50 : 0)
.heartbeatInterval(50);
@@ -119,12 +108,8 @@ public class ReconnectTest {
server2.close();
waitForConnections(client, 1);
- server2 = AbstractClientTest.startServer(
- 10902,
- 0,
- 0,
- new FakeIgnite(),
- "node3");
+ Ignite ignite = new FakeIgnite();
+ server2 = new TestServer(0, ignite, null, null, "node3",
AbstractClientTest.clusterId, null, 10903);
if (reconnectEnabled) {
waitForConnections(client, 2);
@@ -143,7 +128,7 @@ public class ReconnectTest {
startTwoServers();
Builder builder = IgniteClient.builder()
- .addresses("127.0.0.1:10900..10902")
+ .addresses("127.0.0.1:10901", "127.0.0.1:10902")
.reconnectInterval(50)
.heartbeatInterval(50);
@@ -159,19 +144,10 @@ public class ReconnectTest {
}
private void startTwoServers() {
- server = AbstractClientTest.startServer(
- 10900,
- 0,
- 0,
- new FakeIgnite(),
- "node1");
-
- server2 = AbstractClientTest.startServer(
- 10901,
- 0,
- 0,
- new FakeIgnite(),
- "node2");
+ Ignite ignite = new FakeIgnite();
+ server = new TestServer(0, ignite, null, null, "node1",
AbstractClientTest.clusterId, null, 10901);
+ Ignite ignite1 = new FakeIgnite();
+ server2 = new TestServer(0, ignite1, null, null, "node2",
AbstractClientTest.clusterId, null, 10902);
}
private static void waitForConnections(IgniteClient client, int
expectedConnections) throws InterruptedException {
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/RequestBalancingTest.java
b/modules/client/src/test/java/org/apache/ignite/client/RequestBalancingTest.java
index b0440ab327..4af3dde8c8 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/RequestBalancingTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/RequestBalancingTest.java
@@ -48,9 +48,9 @@ public class RequestBalancingTest {
@BeforeEach
void setUp() {
FakeIgnite ignite = new FakeIgnite();
- server1 = AbstractClientTest.startServer(10900, 10, 0, ignite, "s1");
- server2 = AbstractClientTest.startServer(10900, 10, 0, ignite, "s2");
- server3 = AbstractClientTest.startServer(10900, 10, 0, ignite, "s3");
+ server1 = new TestServer(0, ignite, null, null, "s1",
AbstractClientTest.clusterId, null, 10991);
+ server2 = new TestServer(0, ignite, null, null, "s2",
AbstractClientTest.clusterId, null, 10992);
+ server3 = new TestServer(0, ignite, null, null, "s3",
AbstractClientTest.clusterId, null, 10993);
}
@AfterEach
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/RetryPolicyTest.java
b/modules/client/src/test/java/org/apache/ignite/client/RetryPolicyTest.java
index a28c978eaf..9b21b1d2a0 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/RetryPolicyTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/RetryPolicyTest.java
@@ -279,6 +279,6 @@ public class RetryPolicyTest {
FakeIgnite ign = new FakeIgnite();
((FakeIgniteTables) ign.tables()).createTable("t");
- server = new TestServer(10900, 10, 0, ign, shouldDropConnection, null,
null, UUID.randomUUID(), null);
+ server = new TestServer(0, ign, shouldDropConnection, null, null,
UUID.randomUUID(), null, null);
}
}
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/SchemaUpdateTest.java
b/modules/client/src/test/java/org/apache/ignite/client/SchemaUpdateTest.java
index ecd86e7990..c6298799a4 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/SchemaUpdateTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/SchemaUpdateTest.java
@@ -55,7 +55,7 @@ public class SchemaUpdateTest {
@Test
public void testMultipleParallelOperationsRequestSchemaOnce() {
int responseDelay = 100;
- server = new TestServer(10800, 10, 10000, ignite(), null, idx ->
responseDelay, "n", UUID.randomUUID(), null);
+ server = new TestServer(10000, ignite(), null, idx -> responseDelay,
"n", UUID.randomUUID(), null, null);
client = startClient();
RecordView<Tuple> view =
client.tables().table(DEFAULT_TABLE).recordView();
@@ -75,7 +75,7 @@ public class SchemaUpdateTest {
AtomicBoolean shouldFail = new AtomicBoolean(true);
Function<Integer, Boolean> shouldDropConnection = idx -> idx >= 3 &&
shouldFail.getAndSet(false);
- server = new TestServer(10800, 10, 10000, ignite(),
shouldDropConnection, null, "n", UUID.randomUUID(), null);
+ server = new TestServer(10000, ignite(), shouldDropConnection, null,
"n", UUID.randomUUID(), null, null);
client = startClient();
RecordView<Tuple> view =
client.tables().table(DEFAULT_TABLE).recordView();
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/TestClientHandlerModule.java
b/modules/client/src/test/java/org/apache/ignite/client/TestClientHandlerModule.java
index 4d704e8e8f..c91537c005 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/TestClientHandlerModule.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/TestClientHandlerModule.java
@@ -171,11 +171,6 @@ public class TestClientHandlerModule implements
IgniteComponent {
private ChannelFuture startEndpoint() throws InterruptedException {
var configuration =
registry.getConfiguration(ClientConnectorConfiguration.KEY).value();
- int desiredPort = configuration.port();
- int portRange = configuration.portRange();
-
- Channel ch = null;
-
var requestCounter = new AtomicInteger();
ServerBootstrap bootstrap = bootstrapFactory.createServerBootstrap();
@@ -202,21 +197,18 @@ public class TestClientHandlerModule implements
IgniteComponent {
})
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS,
configuration.connectTimeout());
- for (int portCandidate = desiredPort; portCandidate <= desiredPort +
portRange; portCandidate++) {
- ChannelFuture bindRes = bootstrap.bind(portCandidate).await();
-
- if (bindRes.isSuccess()) {
- ch = bindRes.channel();
+ int port = configuration.port();
+ Channel ch = null;
+ ChannelFuture bindRes = bootstrap.bind(port).await();
- break;
- } else if (!(bindRes.cause() instanceof BindException)) {
- throw new IgniteException(bindRes.cause());
- }
+ if (bindRes.isSuccess()) {
+ ch = bindRes.channel();
+ } else if (!(bindRes.cause() instanceof BindException)) {
+ throw new IgniteException(bindRes.cause());
}
if (ch == null) {
- String msg = "Cannot start thin client connector endpoint. "
- + "All ports in range [" + desiredPort + ", " +
(desiredPort + portRange) + "] are in use.";
+ String msg = "Cannot start thin client connector endpoint. Port "
+ port + " is in use.";
throw new IgniteException(msg);
}
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/TestServer.java
b/modules/client/src/test/java/org/apache/ignite/client/TestServer.java
index 540f002d06..c6caa5e881 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/TestServer.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/TestServer.java
@@ -22,7 +22,10 @@ import static org.mockito.Answers.RETURNS_DEEP_STUBS;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
+import java.io.IOError;
+import java.io.IOException;
import java.net.InetSocketAddress;
+import java.net.ServerSocket;
import java.net.SocketAddress;
import java.util.List;
import java.util.Objects;
@@ -73,26 +76,21 @@ public class TestServer implements AutoCloseable {
/**
* Constructor.
*
- * @param port Port.
- * @param portRange Port range.
* @param idleTimeout Idle timeout.
* @param ignite Ignite.
*/
public TestServer(
- int port,
- int portRange,
long idleTimeout,
Ignite ignite
) {
this(
- port,
- portRange,
idleTimeout,
ignite,
null,
null,
null,
UUID.randomUUID(),
+ null,
null
);
}
@@ -100,21 +98,18 @@ public class TestServer implements AutoCloseable {
/**
* Constructor.
*
- * @param port Port.
- * @param portRange Port range.
* @param idleTimeout Idle timeout.
* @param ignite Ignite.
*/
public TestServer(
- int port,
- int portRange,
long idleTimeout,
Ignite ignite,
@Nullable Function<Integer, Boolean> shouldDropConnection,
@Nullable Function<Integer, Integer> responseDelay,
@Nullable String nodeName,
UUID clusterId,
- @Nullable AuthenticationConfiguration authenticationConfiguration
+ @Nullable AuthenticationConfiguration authenticationConfiguration,
+ @Nullable Integer port
) {
generator = new
ConfigurationTreeGenerator(ClientConnectorConfiguration.KEY,
NetworkConfiguration.KEY);
cfg = new ConfigurationRegistry(
@@ -127,7 +122,7 @@ public class TestServer implements AutoCloseable {
cfg.start();
cfg.getConfiguration(ClientConnectorConfiguration.KEY).change(
- local ->
local.changePort(port).changePortRange(portRange).changeIdleTimeout(idleTimeout)
+ local -> local.changePort(port != null ? port :
getFreePort()).changeIdleTimeout(idleTimeout)
).join();
bootstrapFactory = new
NettyBootstrapFactory(cfg.getConfiguration(NetworkConfiguration.KEY),
"TestServer-");
@@ -243,6 +238,14 @@ public class TestServer implements AutoCloseable {
return name + "-id";
}
+ private static int getFreePort() {
+ try (var serverSocket = new ServerSocket(0)) {
+ return serverSocket.getLocalPort();
+ } catch (IOException e) {
+ throw new IOError(e);
+ }
+ }
+
private AuthenticationManager
authenticationManager(AuthenticationConfiguration authenticationConfiguration) {
AuthenticationManagerImpl authenticationManager = new
AuthenticationManagerImpl();
authenticationConfiguration.listen(authenticationManager);
diff --git
a/modules/client/src/test/java/org/apache/ignite/internal/client/HostAndPortRangeTest.java
b/modules/client/src/test/java/org/apache/ignite/internal/client/HostAndPortTest.java
similarity index 59%
rename from
modules/client/src/test/java/org/apache/ignite/internal/client/HostAndPortRangeTest.java
rename to
modules/client/src/test/java/org/apache/ignite/internal/client/HostAndPortTest.java
index 9d2d350610..c092341311 100644
---
a/modules/client/src/test/java/org/apache/ignite/internal/client/HostAndPortRangeTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/internal/client/HostAndPortTest.java
@@ -27,23 +27,7 @@ import org.junit.jupiter.api.Test;
/**
* Tests HostAndPortRange.
*/
-public class HostAndPortRangeTest {
- /**
- * Tests correct input address with IPv4 host and port range.
- */
- @Test
- public void testParseIpv4WithPortRange() {
- String addrStr = "127.0.0.1:8080..8090";
- String errMsgPrefix = "";
- int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
-
- HostAndPortRange actual = HostAndPortRange.parse(addrStr,
dfltPortFrom, dfltPortTo, errMsgPrefix);
- HostAndPortRange expected = new HostAndPortRange("127.0.0.1", 8080,
8090);
-
- assertEquals(expected, actual);
- }
-
+public class HostAndPortTest {
/**
* Tests correct input address with IPv4 host and single port.
*/
@@ -52,10 +36,9 @@ public class HostAndPortRangeTest {
String addrStr = "127.0.0.1:8080";
String errMsgPrefix = "";
int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
- HostAndPortRange actual = HostAndPortRange.parse(addrStr,
dfltPortFrom, dfltPortTo, errMsgPrefix);
- HostAndPortRange expected = new HostAndPortRange("127.0.0.1", 8080,
8080);
+ HostAndPort actual = HostAndPort.parse(addrStr, dfltPortFrom,
errMsgPrefix);
+ HostAndPort expected = new HostAndPort("127.0.0.1", 8080);
assertEquals(expected, actual);
}
@@ -68,26 +51,9 @@ public class HostAndPortRangeTest {
String addrStr = "127.0.0.1";
String errMsgPrefix = "";
int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
-
- HostAndPortRange actual = HostAndPortRange.parse(addrStr,
dfltPortFrom, dfltPortTo, errMsgPrefix);
- HostAndPortRange expected = new HostAndPortRange("127.0.0.1", 18360,
18362);
-
- assertEquals(expected, actual);
- }
-
- /**
- * Tests correct input address with IPv6 host and port range.
- */
- @Test
- public void testParseIpv6WithPortRange() {
- String addrStr = "[::1]:8080..8090";
- String errMsgPrefix = "";
- int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
- HostAndPortRange actual = HostAndPortRange.parse(addrStr,
dfltPortFrom, dfltPortTo, errMsgPrefix);
- HostAndPortRange expected = new HostAndPortRange("::1", 8080, 8090);
+ HostAndPort actual = HostAndPort.parse(addrStr, dfltPortFrom,
errMsgPrefix);
+ HostAndPort expected = new HostAndPort("127.0.0.1", 18360);
assertEquals(expected, actual);
}
@@ -100,10 +66,9 @@ public class HostAndPortRangeTest {
String addrStr = "[3ffe:2a00:100:7031::]:8080";
String errMsgPrefix = "";
int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
- HostAndPortRange actual = HostAndPortRange.parse(addrStr,
dfltPortFrom, dfltPortTo, errMsgPrefix);
- HostAndPortRange expected = new
HostAndPortRange("3ffe:2a00:100:7031::", 8080, 8080);
+ HostAndPort actual = HostAndPort.parse(addrStr, dfltPortFrom,
errMsgPrefix);
+ HostAndPort expected = new HostAndPort("3ffe:2a00:100:7031::", 8080);
assertEquals(expected, actual);
}
@@ -116,10 +81,9 @@ public class HostAndPortRangeTest {
String addrStr = "::FFFF:129.144.52.38";
String errMsgPrefix = "";
int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
- HostAndPortRange actual = HostAndPortRange.parse(addrStr,
dfltPortFrom, dfltPortTo, errMsgPrefix);
- HostAndPortRange expected = new
HostAndPortRange("::FFFF:129.144.52.38", 18360, 18362);
+ HostAndPort actual = HostAndPort.parse(addrStr, dfltPortFrom,
errMsgPrefix);
+ HostAndPort expected = new HostAndPort("::FFFF:129.144.52.38", 18360);
assertEquals(expected, actual);
}
@@ -132,10 +96,9 @@ public class HostAndPortRangeTest {
String addrStr = "3ffe:2a00:100:7031";
String errMsgPrefix = "";
int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
var ex = assertThrows(IgniteException.class,
- () -> HostAndPortRange.parse(addrStr, dfltPortFrom,
dfltPortTo, errMsgPrefix));
+ () -> HostAndPort.parse(addrStr, dfltPortFrom, errMsgPrefix));
assertTrue(ex.getMessage().contains("IPv6 is incorrect"),
ex.getMessage());
}
@@ -148,10 +111,9 @@ public class HostAndPortRangeTest {
String addrStr = ":8080";
String errMsgPrefix = "";
int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
var ex = assertThrows(IgniteException.class,
- () -> HostAndPortRange.parse(addrStr, dfltPortFrom,
dfltPortTo, errMsgPrefix));
+ () -> HostAndPort.parse(addrStr, dfltPortFrom, errMsgPrefix));
assertTrue(ex.getMessage().contains("Host name is empty"),
ex.getMessage());
}
@@ -164,10 +126,9 @@ public class HostAndPortRangeTest {
String addrStr = "";
String errMsgPrefix = "";
int dfltPortFrom = 18360;
- int dfltPortTo = 18362;
var ex = assertThrows(IgniteException.class,
- () -> HostAndPortRange.parse(addrStr, dfltPortFrom,
dfltPortTo, errMsgPrefix));
+ () -> HostAndPort.parse(addrStr, dfltPortFrom, errMsgPrefix));
assertTrue(ex.getMessage().contains("Address is empty"),
ex.getMessage());
}
diff --git a/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroups.java
b/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroups.java
index a36d8d09e3..daf854c454 100755
--- a/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroups.java
+++ b/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroups.java
@@ -357,6 +357,9 @@ public class ErrorGroups {
/** Unresolvable consistent ID. */
public static final int UNRESOLVABLE_CONSISTENT_ID_ERR =
NETWORK_ERR_GROUP.registerErrorCode(1);
+
+ /** Port is in use. */
+ public static final int PORT_IN_USE_ERR =
NETWORK_ERR_GROUP.registerErrorCode(2);
}
/** Node configuration error group. */
diff --git
a/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcErrorsSelfTest.java
b/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcErrorsSelfTest.java
index 0b46c00e59..8ceb7a50fb 100644
---
a/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcErrorsSelfTest.java
+++
b/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcErrorsSelfTest.java
@@ -100,7 +100,7 @@ public class ItJdbcErrorsSelfTest extends
ItJdbcErrorsAbstractSelfTest {
@Test
public void testInvalidConnectionStringFormat() {
checkErrorState(() ->
DriverManager.getConnection("jdbc:ignite:thin://127.0.0.1:1000000"),
- CLIENT_CONNECTION_FAILED, "port range contains invalid port
1000000");
+ CLIENT_CONNECTION_FAILED, "invalid port 1000000");
}
/**
diff --git
a/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionProperties.java
b/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionProperties.java
index fbc1f319f8..9c6058a11d 100644
---
a/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionProperties.java
+++
b/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionProperties.java
@@ -19,7 +19,7 @@ package org.apache.ignite.internal.jdbc;
import java.sql.SQLException;
import org.apache.ignite.client.ClientAuthenticationMode;
-import org.apache.ignite.internal.client.HostAndPortRange;
+import org.apache.ignite.internal.client.HostAndPort;
/**
* Provide access and manipulations with connection JDBC properties.
@@ -59,14 +59,14 @@ public interface ConnectionProperties {
*
* @return Ignite nodes addresses.
*/
- HostAndPortRange[] getAddresses();
+ HostAndPort[] getAddresses();
/**
* Set the ignite node addresses.
*
* @param addrs Ignite nodes addresses.
*/
- void setAddresses(HostAndPortRange[] addrs);
+ void setAddresses(HostAndPort[] addrs);
/**
* Note: zero value means there is no limits.
diff --git
a/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionPropertiesImpl.java
b/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionPropertiesImpl.java
index 164638a482..ab475b1b13 100644
---
a/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionPropertiesImpl.java
+++
b/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionPropertiesImpl.java
@@ -26,7 +26,7 @@ import java.util.StringTokenizer;
import java.util.stream.Collectors;
import org.apache.ignite.client.ClientAuthenticationMode;
import org.apache.ignite.client.IgniteClientConfiguration;
-import org.apache.ignite.internal.client.HostAndPortRange;
+import org.apache.ignite.internal.client.HostAndPort;
import org.apache.ignite.internal.jdbc.proto.SqlStateCode;
import org.apache.ignite.internal.util.ArrayUtils;
import org.apache.ignite.lang.IgniteException;
@@ -53,7 +53,7 @@ public class ConnectionPropertiesImpl implements
ConnectionProperties, Serializa
private String url;
/** Addresses. */
- private HostAndPortRange[] addrs;
+ private HostAndPort[] addrs;
/** Schema name. Hidden property. Is used to set default schema name part
of the URL. */
private final StringProperty schema = new StringProperty(PROP_SCHEMA,
@@ -157,7 +157,7 @@ public class ConnectionPropertiesImpl implements
ConnectionProperties, Serializa
StringBuilder sbUrl = new StringBuilder(URL_PREFIX);
- HostAndPortRange[] addrs = getAddresses();
+ HostAndPort[] addrs = getAddresses();
for (int i = 0; i < addrs.length; i++) {
if (i > 0) {
@@ -185,13 +185,13 @@ public class ConnectionPropertiesImpl implements
ConnectionProperties, Serializa
/** {@inheritDoc} */
@Override
- public HostAndPortRange[] getAddresses() {
+ public HostAndPort[] getAddresses() {
return addrs;
}
/** {@inheritDoc} */
@Override
- public void setAddresses(HostAndPortRange[] addrs) {
+ public void setAddresses(HostAndPort[] addrs) {
this.addrs = addrs;
}
@@ -497,14 +497,14 @@ public class ConnectionPropertiesImpl implements
ConnectionProperties, Serializa
String[] endpoints = endpointStr.split(",");
if (endpoints.length > 0) {
- addrs = new HostAndPortRange[endpoints.length];
+ addrs = new HostAndPort[endpoints.length];
}
for (int i = 0; i < endpoints.length; ++i) {
try {
- addrs[i] = HostAndPortRange.parse(endpoints[i],
- IgniteClientConfiguration.DFLT_PORT,
IgniteClientConfiguration.DFLT_PORT,
- "Invalid endpoint format (should be
\"host[:portRangeFrom[..portRangeTo]]\")");
+ addrs[i] = HostAndPort.parse(endpoints[i],
+ IgniteClientConfiguration.DFLT_PORT,
+ "Invalid endpoint format (should be \"host:port\")");
} catch (IgniteException e) {
throw new SQLException(e.getMessage(),
SqlStateCode.CLIENT_CONNECTION_FAILED, e);
}
diff --git
a/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/JdbcConnection.java
b/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/JdbcConnection.java
index c6b7fed16d..9d1ef05ab1 100644
---
a/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/JdbcConnection.java
+++
b/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/JdbcConnection.java
@@ -56,7 +56,7 @@ import org.apache.ignite.client.BasicAuthenticator;
import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.client.IgniteClientAuthenticator;
import org.apache.ignite.client.SslConfiguration;
-import org.apache.ignite.internal.client.HostAndPortRange;
+import org.apache.ignite.internal.client.HostAndPort;
import org.apache.ignite.internal.client.TcpIgniteClient;
import org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode;
import org.apache.ignite.internal.jdbc.proto.JdbcQueryEventHandler;
@@ -922,10 +922,9 @@ public class JdbcConnection implements Connection {
* @param range HostAndPortRange.
* @return Address string with host and port range.
*/
- private String createStrAddress(HostAndPortRange range) {
+ private String createStrAddress(HostAndPort range) {
String host = range.host();
- int portFrom = range.portFrom();
- int portTo = range.portTo();
+ int port = range.port();
boolean ipV6 = host.contains(":");
@@ -933,7 +932,7 @@ public class JdbcConnection implements Connection {
host = "[" + host + "]";
}
- return host + ":" + (portFrom == portTo ? portFrom : portFrom + ".." +
portTo);
+ return host + ":" + port;
}
/**
diff --git a/modules/platforms/dotnet/Apache.Ignite.Tests/EndpointTests.cs
b/modules/platforms/dotnet/Apache.Ignite.Tests/EndpointTests.cs
index 51b1e86bc3..394f8a1992 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Tests/EndpointTests.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Tests/EndpointTests.cs
@@ -34,22 +34,22 @@ namespace Apache.Ignite.Tests
ex = AssertThrowsClientException("host:");
Assert.AreEqual(
- "Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: host:",
+ "Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: 'host:'",
ex.Message);
ex = AssertThrowsClientException("host:port");
Assert.AreEqual(
- "Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: host:port",
+ "Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: 'host:port'",
ex.Message);
ex = AssertThrowsClientException("host:1..");
Assert.AreEqual(
- "Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: host:1..",
+ "Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: 'host:1..'",
ex.Message);
ex = AssertThrowsClientException("host:1..2..3");
Assert.AreEqual(
- "Unrecognized format of IgniteClientConfiguration.Endpoint:
host:1..2..3",
+ "Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: 'host:1..2..3'",
ex.Message);
}
@@ -59,45 +59,26 @@ namespace Apache.Ignite.Tests
const string ip = "1.2.3.4";
const string host = "example.com";
const int port = 678;
- const int port2 = 680;
var ipWithDefaultPort = Endpoint.GetEndpoints(new
IgniteClientConfiguration(ip)).Single();
Assert.AreEqual(ip, ipWithDefaultPort.Host);
Assert.AreEqual(IgniteClientConfiguration.DefaultPort,
ipWithDefaultPort.Port);
- Assert.AreEqual(0, ipWithDefaultPort.PortRange);
var ipWithCustomPort = Endpoint
.GetEndpoints(new IgniteClientConfiguration($"{ip}:{port}"))
.Single();
Assert.AreEqual(ip, ipWithCustomPort.Host);
Assert.AreEqual(port, ipWithCustomPort.Port);
- Assert.AreEqual(0, ipWithCustomPort.PortRange);
-
- var ipWithPortRange = Endpoint
- .GetEndpoints(new
IgniteClientConfiguration($"{ip}:{port}..{port2}"))
- .Single();
- Assert.AreEqual(ip, ipWithPortRange.Host);
- Assert.AreEqual(port, ipWithPortRange.Port);
- Assert.AreEqual(port2 - port, ipWithPortRange.PortRange);
var hostWithDefaultPort = Endpoint.GetEndpoints(new
IgniteClientConfiguration(host)).Single();
Assert.AreEqual(host, hostWithDefaultPort.Host);
Assert.AreEqual(IgniteClientConfiguration.DefaultPort,
hostWithDefaultPort.Port);
- Assert.AreEqual(0, hostWithDefaultPort.PortRange);
var hostWithCustomPort = Endpoint
.GetEndpoints(new IgniteClientConfiguration($"{host}:{port}"))
.Single();
Assert.AreEqual(host, hostWithCustomPort.Host);
Assert.AreEqual(port, hostWithCustomPort.Port);
- Assert.AreEqual(0, hostWithCustomPort.PortRange);
-
- var hostWithPortRange = Endpoint
- .GetEndpoints(new
IgniteClientConfiguration($"{host}:{port}..{port2}"))
- .Single();
- Assert.AreEqual(host, hostWithPortRange.Host);
- Assert.AreEqual(port, hostWithPortRange.Port);
- Assert.AreEqual(port2 - port, hostWithPortRange.PortRange);
}
private static IgniteClientException
AssertThrowsClientException(string endpoint)
diff --git
a/modules/platforms/dotnet/Apache.Ignite/Internal/ClientFailoverSocket.cs
b/modules/platforms/dotnet/Apache.Ignite/Internal/ClientFailoverSocket.cs
index 8140c0da54..d9d12ef13c 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/ClientFailoverSocket.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/ClientFailoverSocket.cs
@@ -474,14 +474,11 @@ namespace Apache.Ignite.Internal
foreach (var e in Endpoint.GetEndpoints(cfg))
{
var host = e.Host;
- Debug.Assert(host != null, "host != null"); // Checked by
GetEndpoints.
+ Debug.Assert(host != null, "host != null"); // Checked by
GetEndpoints.
- for (var port = e.Port; port <= e.PortRange + e.Port; port++)
+ foreach (var ip in GetIps(host))
{
- foreach (var ip in GetIps(host))
- {
- yield return new SocketEndpoint(new IPEndPoint(ip,
port), host);
- }
+ yield return new SocketEndpoint(new IPEndPoint(ip,
e.Port), host);
}
}
}
diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Endpoint.cs
b/modules/platforms/dotnet/Apache.Ignite/Internal/Endpoint.cs
index 4930c80602..d8ba7c528b 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Endpoint.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Endpoint.cs
@@ -17,7 +17,6 @@
namespace Apache.Ignite.Internal
{
- using System;
using System.Collections.Generic;
using System.ComponentModel;
using Common;
@@ -30,17 +29,13 @@ namespace Apache.Ignite.Internal
/** */
private const char HostSeparator = ':';
- /** */
- private static readonly string[] PortsSeparators = {".."};
-
/// <summary>
/// Initializes a new instance of the <see cref="Endpoint"/> class.
/// </summary>
- private Endpoint(string host, int port =
IgniteClientConfiguration.DefaultPort, int portRange = 0)
+ private Endpoint(string host, int port =
IgniteClientConfiguration.DefaultPort)
{
Host = IgniteArgumentCheck.NotNullOrEmpty(host);
Port = port;
- PortRange = portRange;
}
/// <summary>
@@ -54,11 +49,6 @@ namespace Apache.Ignite.Internal
[DefaultValue(IgniteClientConfiguration.DefaultPort)]
public int Port { get; }
- /// <summary>
- /// Gets the port range. Default is 0, meaning only one port is used,
defined by <see cref="Port"/>.
- /// </summary>
- public int PortRange { get; }
-
/// <summary>
/// Gets the client endpoints from given configuration.
/// </summary>
@@ -96,31 +86,7 @@ namespace Apache.Ignite.Internal
var host = endpoint.Substring(0, idx);
var port = endpoint.Substring(idx + 1);
- var ports = port.Split(PortsSeparators, StringSplitOptions.None);
-
- if (ports.Length == 1)
- {
- return new Endpoint(host, ParsePort(endpoint, port));
- }
-
- if (ports.Length == 2)
- {
- var minPort = ParsePort(endpoint, ports[0]);
- var maxPort = ParsePort(endpoint, ports[1]);
-
- if (maxPort < minPort)
- {
- throw new IgniteClientException(
- ErrorGroups.Client.Configuration,
- "Invalid format of IgniteClientConfiguration.Endpoint,
port range is empty: " + endpoint);
- }
-
- return new Endpoint(host, minPort, maxPort - minPort);
- }
-
- throw new IgniteClientException(
- ErrorGroups.Client.Configuration,
- "Unrecognized format of IgniteClientConfiguration.Endpoint: "
+ endpoint);
+ return new Endpoint(host, ParsePort(endpoint, port));
}
/// <summary>
@@ -137,7 +103,7 @@ namespace Apache.Ignite.Internal
throw new IgniteClientException(
ErrorGroups.Client.Configuration,
- "Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: " + endpoint);
+ $"Unrecognized format of IgniteClientConfiguration.Endpoint,
failed to parse port: '{endpoint}'");
}
}
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/Cluster.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/Cluster.java
index b37a6c681c..509c95045d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/Cluster.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/Cluster.java
@@ -73,6 +73,8 @@ public class Cluster {
/** Base port number. */
private static final int BASE_PORT = 3344;
+ private static final int BASE_CLIENT_PORT = 10800;
+
private static final String CONNECT_NODE_ADDR = "\"localhost:" + BASE_PORT
+ '\"';
/** Timeout for SQL queries (in milliseconds). */
@@ -85,7 +87,8 @@ public class Cluster {
+ " \"nodeFinder\":{\n"
+ " \"netClusterNodes\": [ {} ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
private final TestInfo testInfo;
@@ -222,7 +225,11 @@ public class Cluster {
public CompletableFuture<IgniteImpl> startNodeAsync(int nodeIndex, String
nodeBootstrapConfigTemplate) {
String nodeName = testNodeName(testInfo, nodeIndex);
- String config =
IgniteStringFormatter.format(nodeBootstrapConfigTemplate, BASE_PORT +
nodeIndex, CONNECT_NODE_ADDR);
+ String config = IgniteStringFormatter.format(
+ nodeBootstrapConfigTemplate,
+ BASE_PORT + nodeIndex,
+ CONNECT_NODE_ADDR,
+ BASE_CLIENT_PORT + nodeIndex);
return TestIgnitionManager.start(nodeName, config,
workDir.resolve(nodeName))
.thenApply(IgniteImpl.class::cast)
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ClusterPerTestIntegrationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ClusterPerTestIntegrationTest.java
index 82cd58351f..2413724fc4 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ClusterPerTestIntegrationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ClusterPerTestIntegrationTest.java
@@ -54,7 +54,8 @@ public abstract class ClusterPerTestIntegrationTest extends
IgniteIntegrationTes
+ " nodeFinder: {\n"
+ " netClusterNodes: [ {} ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
/** Template for node bootstrap config with Scalecube settings for fast
failure detection. */
@@ -73,7 +74,8 @@ public abstract class ClusterPerTestIntegrationTest extends
IgniteIntegrationTes
+ " gossipInterval: 10\n"
+ " },\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
/** Template for node bootstrap config with Scalecube settings for a
disabled failure detection. */
@@ -86,7 +88,8 @@ public abstract class ClusterPerTestIntegrationTest extends
IgniteIntegrationTes
+ " membership: {\n"
+ " failurePingInterval: 1000000000\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
protected Cluster cluster;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/cluster/management/ItClusterInitTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/cluster/management/ItClusterInitTest.java
index 6e17c630bf..accda25e4d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/cluster/management/ItClusterInitTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/cluster/management/ItClusterInitTest.java
@@ -107,6 +107,7 @@ public class ItClusterInitTest extends IgniteAbstractTest {
for (int port : ports) {
String config = "{"
+ " network.port: " + port + ","
+ + " clientConnector.port: " + (port + 8000) + ","
+ " network.nodeFinder.netClusterNodes: " +
nodeFinderConfig
+ "}";
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
index c430c8e587..15079a7b2d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
@@ -70,7 +70,8 @@ class ItLogicalTopologyTest extends
ClusterPerTestIntegrationTest {
+ " },"
+ " nodeAttributes: {\n"
+ " nodeAttributes: " + NODE_ATTRIBUTES
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
private final LogicalTopologyEventListener listener = new
LogicalTopologyEventListener() {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/distribution/zones/ItDistributionZonesFilterTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/distribution/zones/ItDistributionZonesFilterTest.java
index 9100318391..74198469b5 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/distribution/zones/ItDistributionZonesFilterTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/distribution/zones/ItDistributionZonesFilterTest.java
@@ -76,6 +76,7 @@ public class ItDistributionZonesFilterTest extends
ClusterPerTestIntegrationTest
+ " nodeAttributes: {\n"
+ " nodeAttributes: " + nodeAttributes
+ " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/raftsnapshot/ItTableRaftSnapshotsTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/raftsnapshot/ItTableRaftSnapshotsTest.java
index a7b02217bb..f6d0bc3fe2 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/raftsnapshot/ItTableRaftSnapshotsTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/raftsnapshot/ItTableRaftSnapshotsTest.java
@@ -115,7 +115,8 @@ class ItTableRaftSnapshotsTest extends
IgniteIntegrationTest {
+ " netClusterNodes: [ {} ]\n"
+ " }\n"
+ " },\n"
- + " raft.rpcInstallSnapshotTimeout: 10000"
+ + " raft.rpcInstallSnapshotTimeout: 10000,"
+ + " clientConnector.port: {}\n"
+ "}";
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/AbstractRestTestBase.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/AbstractRestTestBase.java
index 208564fe49..48c0581432 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/AbstractRestTestBase.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/AbstractRestTestBase.java
@@ -113,7 +113,8 @@ abstract class AbstractRestTestBase extends
IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector.port: 10800"
+ "}"
);
@@ -125,7 +126,8 @@ abstract class AbstractRestTestBase extends
IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector.port: 10801"
+ "}"
);
@@ -137,7 +139,8 @@ abstract class AbstractRestTestBase extends
IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector.port: 10802"
+ "}"
);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/RestNode.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/RestNode.java
index 46099e83a3..7c8e379cbb 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/RestNode.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/RestNode.java
@@ -128,6 +128,7 @@ public class RestNode {
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
+ " },\n"
+ + " clientConnector.port: " + (httpPort + 1000) + ",\n"
+ " rest: {\n"
+ " port: " + httpPort + ",\n"
+ " dualProtocol: " + dualProtocol + ",\n"
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
index c35ce2e88c..43d1624430 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
@@ -85,7 +85,8 @@ abstract class AbstractSchemaChangeTest extends
IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:10901 }\n"
+ "}"
);
@@ -97,7 +98,8 @@ abstract class AbstractSchemaChangeTest extends
IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:10902 }\n"
+ "}"
);
@@ -109,7 +111,8 @@ abstract class AbstractSchemaChangeTest extends
IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:10903 }\n"
+ "}"
);
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDataSchemaSyncTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDataSchemaSyncTest.java
index 1f1e1629a1..42c877fef3 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDataSchemaSyncTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDataSchemaSyncTest.java
@@ -85,7 +85,8 @@ public class ItDataSchemaSyncTest extends IgniteAbstractTest {
+ " \"nodeFinder\": {\n"
+ " \"netClusterNodes\":[ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:10801 }\n"
+ "}",
"node2", "{\n"
@@ -94,7 +95,8 @@ public class ItDataSchemaSyncTest extends IgniteAbstractTest {
+ " \"nodeFinder\": {\n"
+ " \"netClusterNodes\":[ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:10802 }\n"
+ "}"
);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteInMemoryNodeRestartTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteInMemoryNodeRestartTest.java
index 68c5d4bd5e..a33c7f7ba4 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteInMemoryNodeRestartTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteInMemoryNodeRestartTest.java
@@ -65,6 +65,9 @@ public class ItIgniteInMemoryNodeRestartTest extends
IgniteAbstractTest {
/** Default node port. */
private static final int DEFAULT_NODE_PORT = 3344;
+ /** Default client port. */
+ private static final int DEFAULT_CLIENT_PORT = 10800;
+
/** Value producer for table data, is used to create data and check it
later. */
private static final IntFunction<String> VALUE_PRODUCER = i -> "val " + i;
@@ -74,7 +77,8 @@ public class ItIgniteInMemoryNodeRestartTest extends
IgniteAbstractTest {
/** Nodes bootstrap configuration pattern. */
private static final String NODE_BOOTSTRAP_CFG = "{\n"
+ " network.port: {},\n"
- + " network.nodeFinder.netClusterNodes: {}\n"
+ + " network.nodeFinder.netClusterNodes: {},\n"
+ + " clientConnector.port: {}\n"
+ "}";
/** Cluster nodes. */
@@ -159,11 +163,12 @@ public class ItIgniteInMemoryNodeRestartTest extends
IgniteAbstractTest {
*/
private static String configurationString(int idx) {
int port = DEFAULT_NODE_PORT + idx;
+ int clientPort = DEFAULT_CLIENT_PORT + idx;
// The address of the first node.
@Language("HOCON") String connectAddr = "[localhost\":\"" +
DEFAULT_NODE_PORT + "]";
- return IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG, port,
connectAddr);
+ return IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG, port,
connectAddr, clientPort);
}
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
index 76d9c698dc..f8bb563339 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
@@ -152,6 +152,8 @@ public class ItIgniteNodeRestartTest extends
IgniteAbstractTest {
/** Default node port. */
private static final int DEFAULT_NODE_PORT = 3344;
+ private static final int DEFAULT_CLIENT_PORT = 10800;
+
/** Value producer for table data, is used to create data and check it
later. */
private static final IntFunction<String> VALUE_PRODUCER = i -> "val " + i;
@@ -180,7 +182,8 @@ public class ItIgniteNodeRestartTest extends
IgniteAbstractTest {
+ " gossipInterval: 10\n"
+ " },\n"
+ " },\n"
- + " raft: " + RAFT_CFG + "\n"
+ + " raft: " + RAFT_CFG + ",\n"
+ + " clientConnector.port: {}\n"
+ "}";
@InjectConfiguration("mock: " + RAFT_CFG)
@@ -676,7 +679,7 @@ public class ItIgniteNodeRestartTest extends
IgniteAbstractTest {
private static String configurationString(int idx) {
String connectAddr = "[\"localhost:" + DEFAULT_NODE_PORT + "\"]";
- return IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG,
DEFAULT_NODE_PORT + idx, connectAddr);
+ return IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG,
DEFAULT_NODE_PORT + idx, connectAddr, DEFAULT_CLIENT_PORT + idx);
}
/**
@@ -1067,7 +1070,8 @@ public class ItIgniteNodeRestartTest extends
IgniteAbstractTest {
@Language("HOCON") String cfgString =
IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG,
DEFAULT_NODE_PORT + 11,
- "[\"localhost:" + DEFAULT_NODE_PORT + "\"]"
+ "[\"localhost:" + DEFAULT_NODE_PORT + "\"]",
+ DEFAULT_CLIENT_PORT + 11
);
PartialNode partialNode = startPartialNode(1, cfgString);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgnitionTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgnitionTest.java
index badb20145d..77715c6f5f 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgnitionTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgnitionTest.java
@@ -82,7 +82,8 @@ class ItIgnitionTest extends IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector.port: 10800\n"
+ "}"
);
@@ -94,7 +95,8 @@ class ItIgnitionTest extends IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector.port: 10801\n"
+ "}"
);
@@ -106,7 +108,8 @@ class ItIgnitionTest extends IgniteIntegrationTest {
+ " nodeFinder: {\n"
+ " netClusterNodes: [ \"localhost:3344\",
\"localhost:3345\", \"localhost:3346\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector.port: 10802\n"
+ "}"
);
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTablesApiTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTablesApiTest.java
index 98a5800e11..72bf12d6ea 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTablesApiTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTablesApiTest.java
@@ -82,17 +82,17 @@ public class ItTablesApiTest extends IgniteAbstractTest {
/** Nodes bootstrap configuration. */
private final List<String> nodesBootstrapCfg = List.of(
"{\n"
- + " network.port :3344,\n"
+ + " network.port :3344, clientConnector.port: 10800,\n"
+ " network.nodeFinder.netClusterNodes:[
\"localhost:3344\", \"localhost:3345\", \"localhost:3346\" ]\n"
+ "}",
"{\n"
- + " network.port :3345,\n"
+ + " network.port :3345, clientConnector.port: 10801,\n"
+ " network.nodeFinder.netClusterNodes:[
\"localhost:3344\", \"localhost:3345\", \"localhost:3346\" ]\n"
+ "}",
"{\n"
- + " network.port :3346,\n"
+ + " network.port :3346, clientConnector.port: 10802,\n"
+ " network.nodeFinder.netClusterNodes:[
\"localhost:3344\", \"localhost:3345\", \"localhost:3346\" ]\n"
+ "}"
);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
index 07a8e4fad1..d238ba42c7 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
@@ -96,7 +96,7 @@ public class PlatformTestNodeRunner {
/** Nodes bootstrap configuration. */
private static final Map<String, String> nodesBootstrapCfg = Map.of(
NODE_NAME, "{\n"
- + " \"clientConnector\":{\"port\":
10942,\"portRange\":1,\"idleTimeout\":3000,\""
+ + " \"clientConnector\":{\"port\":
10942,\"idleTimeout\":3000,\""
+ "sendServerExceptionStackTraceToClient\":true},"
+ " \"network\": {\n"
+ " \"port\":3344,\n"
@@ -107,7 +107,7 @@ public class PlatformTestNodeRunner {
+ "}",
NODE_NAME2, "{\n"
- + " \"clientConnector\":{\"port\":
10943,\"portRange\":1,\"idleTimeout\":3000,"
+ + " \"clientConnector\":{\"port\":
10943,\"idleTimeout\":3000,"
+ "\"sendServerExceptionStackTraceToClient\":true},"
+ " \"network\": {\n"
+ " \"port\":3345,\n"
@@ -120,7 +120,6 @@ public class PlatformTestNodeRunner {
NODE_NAME3, "{\n"
+ " \"clientConnector\":{"
+ " \"port\": 10944,"
- + " \"portRange\":1,"
+ " \"idleTimeout\":3000,"
+ " \"sendServerExceptionStackTraceToClient\":true, "
+ " \"ssl\": {\n"
@@ -142,7 +141,6 @@ public class PlatformTestNodeRunner {
NODE_NAME4, "{\n"
+ " \"clientConnector\":{"
+ " \"port\": 10945,"
- + " \"portRange\":1,"
+ " \"idleTimeout\":3000,"
+ " \"sendServerExceptionStackTraceToClient\":true, "
+ " \"ssl\": {\n"
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItAbstractThinClientTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItAbstractThinClientTest.java
index c2b61f9aae..296663e899 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItAbstractThinClientTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItAbstractThinClientTest.java
@@ -81,6 +81,7 @@ public abstract class ItAbstractThinClientTest extends
IgniteAbstractTest {
"{\n"
+ " network.port: 3344,\n"
+ " network.nodeFinder.netClusterNodes: [
\"localhost:3344\", \"localhost:3345\", \"localhost:3346\" ]\n"
+ + " clientConnector.port: 10800\n"
+ "}"
);
@@ -91,6 +92,7 @@ public abstract class ItAbstractThinClientTest extends
IgniteAbstractTest {
+ " network.nodeFinder.netClusterNodes: [
\"localhost:3344\", \"localhost:3345\", \"localhost:3346\" ]\n"
+ "
clientConnector.sendServerExceptionStackTraceToClient: true\n"
+ " clientConnector.metricsEnabled: true\n"
+ + " clientConnector.port: 10801\n"
+ "}"
);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ClusterPerClassIntegrationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ClusterPerClassIntegrationTest.java
index 23a52a90d2..65fe5d3de5 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ClusterPerClassIntegrationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ClusterPerClassIntegrationTest.java
@@ -98,6 +98,9 @@ public abstract class ClusterPerClassIntegrationTest extends
IgniteIntegrationTe
/** Base port number. */
private static final int BASE_PORT = 3344;
+ /** Base client port number. */
+ private static final int BASE_CLIENT_PORT = 10800;
+
/** Nodes bootstrap configuration pattern. */
private static final String NODE_BOOTSTRAP_CFG = "{\n"
+ " \"network\": {\n"
@@ -105,7 +108,8 @@ public abstract class ClusterPerClassIntegrationTest
extends IgniteIntegrationTe
+ " \"nodeFinder\":{\n"
+ " \"netClusterNodes\": [ {} ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port:{} }\n"
+ "}";
/** Cluster nodes. */
@@ -145,7 +149,7 @@ public abstract class ClusterPerClassIntegrationTest
extends IgniteIntegrationTe
for (int i = 0; i < nodes(); i++) {
String nodeName = testNodeName(testInfo, i);
- String config = IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG,
BASE_PORT + i, connectNodeAddr);
+ String config = IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG,
BASE_PORT + i, connectNodeAddr, BASE_CLIENT_PORT + i);
futures.add(TestIgnitionManager.start(nodeName, config,
WORK_DIR.resolve(nodeName)));
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
index 266cbc834e..97bd0673c7 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
@@ -155,6 +155,8 @@ public class ItSqlLogicTest extends IgniteIntegrationTest {
/** Base port number. */
private static final int BASE_PORT = 3344;
+ private static final int BASE_CLIENT_PORT = 10800;
+
/** Nodes bootstrap configuration pattern. */
private static final String NODE_BOOTSTRAP_CFG = "{\n"
+ " \"network\": {\n"
@@ -162,7 +164,8 @@ public class ItSqlLogicTest extends IgniteIntegrationTest {
+ " \"nodeFinder\":{\n"
+ " \"netClusterNodes\": [ {} ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector.port: {}\n"
+ "}";
/** Cluster nodes. */
@@ -319,7 +322,7 @@ public class ItSqlLogicTest extends IgniteIntegrationTest {
.mapToObj(i -> {
String nodeName = NODE_NAME_PREFIX + i;
- String config =
IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG, BASE_PORT + i,
connectNodeAddr);
+ String config =
IgniteStringFormatter.format(NODE_BOOTSTRAP_CFG, BASE_PORT + i,
connectNodeAddr, BASE_CLIENT_PORT + i);
return TestIgnitionManager.start(nodeName, config,
WORK_DIR.resolve(nodeName));
})
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ssl/ItSslTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ssl/ItSslTest.java
index 0160271973..5ad0371190 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ssl/ItSslTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ssl/ItSslTest.java
@@ -84,12 +84,12 @@ public class ItSslTest extends IgniteIntegrationTest {
String sslDisabledBoostrapConfig = "{\n"
+ " network: {\n"
+ " ssl.enabled: false,\n"
- + " port: 3355,\n"
- + " portRange: 2,\n"
+ + " port: {},\n"
+ " nodeFinder:{\n"
- + " netClusterNodes: [ \"localhost:3355\",
\"localhost:3356\" ]\n"
+ + " netClusterNodes: [ {}, \"localhost:3355\",
\"localhost:3356\" ]\n"
+ " }\n"
- + " }\n"
+ + " },\n"
+ + " clientConnector: { port: {} }\n"
+ "}";
@BeforeAll
@@ -176,12 +176,12 @@ public class ItSslTest extends IgniteIntegrationTest {
+ " path: \"" + escapeWindowsPath(keyStorePath) + "\""
+ " }\n"
+ " },\n"
- + " port: 3345,\n"
- + " portRange: 2,\n"
+ + " port: {},\n"
+ " nodeFinder:{\n"
- + " netClusterNodes: [ \"localhost:3345\",
\"localhost:3346\" ]\n"
+ + " netClusterNodes: [ {}, \"localhost:3345\",
\"localhost:3346\" ]\n"
+ " }\n"
+ " },\n"
+ + " clientConnector: { port: {} },\n"
+ " clientConnector.ssl: {\n"
+ " enabled: true, "
+ " keyStore: {\n"
@@ -385,12 +385,13 @@ public class ItSslTest extends IgniteIntegrationTest {
+ " path: \"" + escapeWindowsPath(keyStorePath) + "\""
+ " }\n"
+ " },\n"
- + " port: 3365,\n"
+ + " port: {},\n"
+ " portRange: 2,\n"
+ " nodeFinder:{\n"
- + " netClusterNodes: [ \"localhost:3365\",
\"localhost:3366\" ]\n"
+ + " netClusterNodes: [ {}, \"localhost:3365\",
\"localhost:3366\" ]\n"
+ " }\n"
+ " },\n"
+ + " clientConnector: { port: {} },\n"
+ " clientConnector.ssl: {\n"
+ " enabled: true, "
+ " clientAuth: \"require\", "
@@ -543,12 +544,13 @@ public class ItSslTest extends IgniteIntegrationTest {
+ " path: \"" + escapeWindowsPath(keyStorePath) + "\""
+ " }\n"
+ " },\n"
- + " port: 3345,\n"
+ + " port: {},\n"
+ " portRange: 2,\n"
+ " nodeFinder:{\n"
- + " netClusterNodes: [ \"localhost:3345\",
\"localhost:3346\" ]\n"
+ + " netClusterNodes: [ {}, \"localhost:3345\",
\"localhost:3346\" ]\n"
+ " }\n"
+ " },\n"
+ + " clientConnector.port: {},\n"
+ " clientConnector.ssl: {\n"
+ " enabled: true, "
+ " ciphers: " + ciphers + ",\n"