You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/09/20 12:48:01 UTC
[03/33] ignite git commit: IGNITE-6413: Improved thin client
configuration processing. This closes #2680.
IGNITE-6413: Improved thin client configuration processing. This closes #2680.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/2d848c9d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2d848c9d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2d848c9d
Branch: refs/heads/ignite-3478
Commit: 2d848c9d0440415a2e342da9ce157c59318062d5
Parents: 2200214
Author: devozerov <vo...@gridgain.com>
Authored: Mon Sep 18 13:36:38 2017 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Mon Sep 18 13:36:38 2017 +0300
----------------------------------------------------------------------
.../configuration/IgniteConfiguration.java | 3 +-
.../odbc/ClientConnectorConfigurationEx.java | 27 +++
.../odbc/ClientListenerProcessor.java | 22 ++-
...onnectorConfigurationValidationSelfTest.java | 195 ++++++++++++++++---
4 files changed, 219 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/2d848c9d/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
index b445205..6e91b10 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
@@ -43,6 +43,7 @@ import org.apache.ignite.compute.ComputeTask;
import org.apache.ignite.events.Event;
import org.apache.ignite.events.EventType;
import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
+import org.apache.ignite.internal.processors.odbc.ClientListenerProcessor;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteAsyncCallback;
import org.apache.ignite.lang.IgniteInClosure;
@@ -472,7 +473,7 @@ public class IgniteConfiguration {
private SqlConnectorConfiguration sqlConnCfg;
/** Client connector configuration. */
- private ClientConnectorConfiguration cliConnCfg;
+ private ClientConnectorConfiguration cliConnCfg = ClientListenerProcessor.DFLT_CLI_CFG;
/**
* Creates valid grid configuration with all default values.
http://git-wip-us.apache.org/repos/asf/ignite/blob/2d848c9d/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientConnectorConfigurationEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientConnectorConfigurationEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientConnectorConfigurationEx.java
new file mode 100644
index 0000000..82b1306
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientConnectorConfigurationEx.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.odbc;
+
+import org.apache.ignite.configuration.ClientConnectorConfiguration;
+
+/**
+ * Extended client connector configuration. Needed to distinguish between default and non-default configurations.
+ */
+public class ClientConnectorConfigurationEx extends ClientConnectorConfiguration {
+ // No-op.
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/2d848c9d/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java
index 3462da2..06977c8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java
@@ -45,6 +45,9 @@ import org.jetbrains.annotations.Nullable;
* Client connector processor.
*/
public class ClientListenerProcessor extends GridProcessorAdapter {
+ /** Default client connector configuration. */
+ public static final ClientConnectorConfiguration DFLT_CLI_CFG = new ClientConnectorConfigurationEx();
+
/** Default number of selectors. */
private static final int DFLT_SELECTOR_CNT = Math.min(4, Runtime.getRuntime().availableProcessors());
@@ -204,7 +207,10 @@ public class ClientListenerProcessor extends GridProcessorAdapter {
SqlConnectorConfiguration sqlConnCfg = cfg.getSqlConnectorConfiguration();
ClientConnectorConfiguration cliConnCfg = cfg.getClientConnectorConfiguration();
- if (cliConnCfg != null) {
+ if (cliConnCfg == null && sqlConnCfg == null && odbcCfg == null)
+ return null;
+
+ if (isNotDefault(cliConnCfg)) {
// User set configuration explicitly. User it, but print a warning about ignored SQL/ODBC configs.
if (odbcCfg != null) {
U.warn(log, "Deprecated " + OdbcConfiguration.class.getSimpleName() + " will be ignored because " +
@@ -221,8 +227,6 @@ public class ClientListenerProcessor extends GridProcessorAdapter {
if (sqlConnCfg != null) {
// Migrate from SQL configuration.
- cliConnCfg = new ClientConnectorConfiguration();
-
cliConnCfg.setHost(sqlConnCfg.getHost());
cliConnCfg.setMaxOpenCursorsPerConnection(sqlConnCfg.getMaxOpenCursorsPerConnection());
cliConnCfg.setPort(sqlConnCfg.getPort());
@@ -244,8 +248,6 @@ public class ClientListenerProcessor extends GridProcessorAdapter {
// Migrate from ODBC configuration.
HostAndPortRange hostAndPort = parseOdbcEndpoint(odbcCfg);
- cliConnCfg = new ClientConnectorConfiguration();
-
cliConnCfg.setHost(hostAndPort.host());
cliConnCfg.setPort(hostAndPort.portFrom());
cliConnCfg.setPortRange(hostAndPort.portTo() - hostAndPort.portFrom());
@@ -305,4 +307,14 @@ public class ClientListenerProcessor extends GridProcessorAdapter {
return res;
}
+
+ /**
+ * Check whether configuration is not default.
+ *
+ * @param cliConnCfg Client connector configuration.
+ * @return {@code True} if not default.
+ */
+ private static boolean isNotDefault(ClientConnectorConfiguration cliConnCfg) {
+ return cliConnCfg != null && !(cliConnCfg instanceof ClientConnectorConfigurationEx);
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/2d848c9d/modules/indexing/src/test/java/org/apache/ignite/internal/processors/client/ClientConnectorConfigurationValidationSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/client/ClientConnectorConfigurationValidationSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/client/ClientConnectorConfigurationValidationSelfTest.java
index 2044949..c861e49 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/client/ClientConnectorConfigurationValidationSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/client/ClientConnectorConfigurationValidationSelfTest.java
@@ -19,10 +19,13 @@ package org.apache.ignite.internal.processors.client;
import junit.framework.TestCase;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.ClientConnectorConfiguration;
+import org.apache.ignite.configuration.OdbcConfiguration;
+import org.apache.ignite.configuration.SqlConnectorConfiguration;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -33,6 +36,7 @@ import org.jetbrains.annotations.Nullable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
+import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicInteger;
@@ -60,7 +64,7 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
*/
public void testDefault() throws Exception {
check(new ClientConnectorConfiguration(), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
}
/**
@@ -72,10 +76,10 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
check(new ClientConnectorConfiguration().setHost("126.0.0.1"), false);
check(new ClientConnectorConfiguration().setHost("127.0.0.1"), true);
- assertJdbc("127.0.0.1", ClientConnectorConfiguration.DFLT_PORT);
+ checkJdbc("127.0.0.1", ClientConnectorConfiguration.DFLT_PORT);
check(new ClientConnectorConfiguration().setHost("0.0.0.0"), true);
- assertJdbc("0.0.0.0", ClientConnectorConfiguration.DFLT_PORT + 1);
+ checkJdbc("0.0.0.0", ClientConnectorConfiguration.DFLT_PORT + 1);
}
@@ -91,10 +95,10 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
check(new ClientConnectorConfiguration().setPort(65536), false);
check(new ClientConnectorConfiguration().setPort(ClientConnectorConfiguration.DFLT_PORT), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
check(new ClientConnectorConfiguration().setPort(ClientConnectorConfiguration.DFLT_PORT + 200), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT + 200);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT + 200);
}
@@ -107,10 +111,10 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
check(new ClientConnectorConfiguration().setPortRange(-1), false);
check(new ClientConnectorConfiguration().setPortRange(0), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
check(new ClientConnectorConfiguration().setPortRange(10), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT + 1);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT + 1);
}
/**
@@ -123,10 +127,10 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
check(new ClientConnectorConfiguration().setSocketReceiveBufferSize(-4 * 1024), false);
check(new ClientConnectorConfiguration().setSocketSendBufferSize(4 * 1024), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
check(new ClientConnectorConfiguration().setSocketReceiveBufferSize(4 * 1024), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT + 1);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT + 1);
}
/**
@@ -138,10 +142,10 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
check(new ClientConnectorConfiguration().setMaxOpenCursorsPerConnection(-1), false);
check(new ClientConnectorConfiguration().setMaxOpenCursorsPerConnection(0), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
check(new ClientConnectorConfiguration().setMaxOpenCursorsPerConnection(100), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT + 1);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT + 1);
}
/**
@@ -154,24 +158,156 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
check(new ClientConnectorConfiguration().setThreadPoolSize(-1), false);
check(new ClientConnectorConfiguration().setThreadPoolSize(4), true);
- assertJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
}
/**
- * Perform check.
+ * Test ODBC connector conversion.
*
- * @param sqlCfg SQL configuration.
- * @param success Success flag. * @throws Exception If failed.
+ * @throws Exception If failed.
+ */
+ public void testOdbcConnectorConversion() throws Exception {
+ int port = ClientConnectorConfiguration.DFLT_PORT - 1;
+
+ IgniteConfiguration cfg = baseConfiguration();
+
+ cfg.setOdbcConfiguration(new OdbcConfiguration().setEndpointAddress("127.0.0.1:" + port));
+
+ Ignition.start(cfg);
+
+ checkJdbc(null, port);
+ }
+
+ /**
+ * Test SQL connector conversion.
+ *
+ * @throws Exception If failed.
+ */
+ public void testSqlConnectorConversion() throws Exception {
+ int port = ClientConnectorConfiguration.DFLT_PORT - 1;
+
+ IgniteConfiguration cfg = baseConfiguration();
+
+ cfg.setSqlConnectorConfiguration(new SqlConnectorConfiguration().setPort(port));
+
+ Ignition.start(cfg);
+
+ checkJdbc(null, port);
+ }
+
+ /**
+ * Test SQL connector conversion.
+ *
+ * @throws Exception If failed.
*/
- @SuppressWarnings({"ThrowableResultOfMethodCallIgnored", "unchecked"})
- private void check(ClientConnectorConfiguration sqlCfg, boolean success) throws Exception {
+ public void testIgnoreOdbcWhenSqlSet() throws Exception {
+ int port = ClientConnectorConfiguration.DFLT_PORT - 1;
+
+ IgniteConfiguration cfg = baseConfiguration();
+
+ cfg.setSqlConnectorConfiguration(new SqlConnectorConfiguration().setPort(port));
+ cfg.setOdbcConfiguration(new OdbcConfiguration().setEndpointAddress("127.0.0.1:" + (port - 1)));
+
+ Ignition.start(cfg);
+
+ checkJdbc(null, port);
+ }
+
+ /**
+ * Test SQL connector conversion.
+ *
+ * @throws Exception If failed.
+ */
+ public void testIgnoreOdbcAndSqlWhenClientSet() throws Exception {
+ int cliPort = ClientConnectorConfiguration.DFLT_PORT - 1;
+ int sqlPort = ClientConnectorConfiguration.DFLT_PORT - 2;
+ int odbcPort = ClientConnectorConfiguration.DFLT_PORT - 3;
+
+ IgniteConfiguration cfg = baseConfiguration();
+
+ cfg.setClientConnectorConfiguration(new ClientConnectorConfiguration().setPort(cliPort));
+ cfg.setSqlConnectorConfiguration(new SqlConnectorConfiguration().setPort(sqlPort));
+ cfg.setOdbcConfiguration(new OdbcConfiguration().setEndpointAddress("127.0.0.1:" + odbcPort));
+
+ Ignition.start(cfg);
+
+ checkJdbc(null, cliPort);
+ }
+
+ /**
+ * Test SQL connector conversion.
+ *
+ * @throws Exception If failed.
+ */
+ public void testIgnoreOdbcWhenClientSet() throws Exception {
+ int cliPort = ClientConnectorConfiguration.DFLT_PORT - 1;
+ int odbcPort = ClientConnectorConfiguration.DFLT_PORT - 2;
+
+ IgniteConfiguration cfg = baseConfiguration();
+
+ cfg.setClientConnectorConfiguration(new ClientConnectorConfiguration().setPort(cliPort));
+ cfg.setOdbcConfiguration(new OdbcConfiguration().setEndpointAddress("127.0.0.1:" + odbcPort));
+
+ Ignition.start(cfg);
+
+ checkJdbc(null, cliPort);
+ }
+
+ /**
+ * Test SQL connector conversion.
+ *
+ * @throws Exception If failed.
+ */
+ public void testIgnoreSqlWhenClientSet() throws Exception {
+ int cliPort = ClientConnectorConfiguration.DFLT_PORT - 1;
+ int sqlPort = ClientConnectorConfiguration.DFLT_PORT - 2;
+
+ IgniteConfiguration cfg = baseConfiguration();
+
+ cfg.setClientConnectorConfiguration(new ClientConnectorConfiguration().setPort(cliPort));
+ cfg.setSqlConnectorConfiguration(new SqlConnectorConfiguration().setPort(sqlPort));
+
+ Ignition.start(cfg);
+
+ checkJdbc(null, cliPort);
+ }
+
+ /**
+ * Test disabled client.
+ *
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
+ public void testDisabled() throws Exception {
+ IgniteConfiguration cfg = baseConfiguration();
+
+ cfg.setClientConnectorConfiguration(null);
+
+ Ignition.start(cfg);
+
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ checkJdbc(null, ClientConnectorConfiguration.DFLT_PORT);
+
+ return null;
+ }
+ }, SQLException.class, null);
+ }
+
+ /**
+ * Get base node configuration.
+ *
+ * @return Configuration.
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("unchecked")
+ private IgniteConfiguration baseConfiguration() throws Exception {
final IgniteConfiguration cfg = super.getConfiguration();
cfg.setIgniteInstanceName(ClientConnectorConfigurationValidationSelfTest.class.getName() + "-" +
NODE_IDX_GEN.incrementAndGet());
cfg.setLocalHost("127.0.0.1");
- cfg.setClientConnectorConfiguration(sqlCfg);
cfg.setMarshaller(new BinaryMarshaller());
TcpDiscoverySpi spi = new TcpDiscoverySpi();
@@ -180,10 +316,25 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
cfg.setDiscoverySpi(spi);
CacheConfiguration ccfg = new CacheConfiguration(CACHE_NAME)
- .setIndexedTypes(SqlConnectorKey.class, SqlConnectorValue.class);
+ .setIndexedTypes(ClientConnectorKey.class, ClientConnectorValue.class);
cfg.setCacheConfiguration(ccfg);
+ return cfg;
+ }
+
+ /**
+ * Perform check.
+ *
+ * @param cliConnCfg Client connector configuration.
+ * @param success Success flag. * @throws Exception If failed.
+ */
+ @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
+ private void check(ClientConnectorConfiguration cliConnCfg, boolean success) throws Exception {
+ final IgniteConfiguration cfg = baseConfiguration();
+
+ cfg.setClientConnectorConfiguration(cliConnCfg);
+
if (success)
startGrid(cfg.getIgniteInstanceName(), cfg);
else {
@@ -204,7 +355,7 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
* @param port Port.
* @throws Exception If failed.
*/
- private void assertJdbc(@Nullable String host, int port) throws Exception {
+ private void checkJdbc(@Nullable String host, int port) throws Exception {
if (host == null)
host = "127.0.0.1";
@@ -226,7 +377,7 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
/**
* Key class.
*/
- private static class SqlConnectorKey {
+ private static class ClientConnectorKey {
@QuerySqlField
public int key;
}
@@ -234,7 +385,7 @@ public class ClientConnectorConfigurationValidationSelfTest extends GridCommonAb
/**
* Value class.
*/
- private static class SqlConnectorValue {
+ private static class ClientConnectorValue {
@QuerySqlField
public int val;
}