IGNITE-2974: ODBC: Added "socketSendBufferSize" and "socketReceiveBufferSize" configuration parameters. This closes #994.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d65228e4 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d65228e4 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d65228e4 Branch: refs/heads/ignite-3661 Commit: d65228e42ec9c84182b8c9c9c8d06a0056d5eed2 Parents: a760918 Author: Andrey V. Mashenkov <andrey.mashen...@gmail.com> Authored: Mon Sep 5 11:20:26 2016 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Mon Sep 5 11:20:26 2016 +0300 ---------------------------------------------------------------------- .../ignite/configuration/OdbcConfiguration.java | 64 ++++++++++++++++++++ .../internal/processors/odbc/OdbcProcessor.java | 8 +-- .../odbc/OdbcProcessorValidationSelfTest.java | 21 ++++++- 3 files changed, 86 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/d65228e4/modules/core/src/main/java/org/apache/ignite/configuration/OdbcConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/OdbcConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/OdbcConfiguration.java index 3746995..c098e09 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/OdbcConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/OdbcConfiguration.java @@ -17,6 +17,8 @@ package org.apache.ignite.configuration; +import org.apache.ignite.internal.util.typedef.internal.S; + /** * ODBC configuration. */ @@ -30,12 +32,21 @@ public class OdbcConfiguration { /** Default maximum TCP port range value. */ public static final int DFLT_TCP_PORT_TO = 10810; + /** Default socket send and receive buffer size. */ + public static final int DFLT_SOCK_BUF_SIZE = 0; + /** Default max number of open cursors per connection. */ public static final int DFLT_MAX_OPEN_CURSORS = 128; /** Endpoint address. */ private String endpointAddr; + /** Socket send buffer size. */ + private int sockSndBufSize = DFLT_SOCK_BUF_SIZE; + + /** Socket receive buffer size. */ + private int sockRcvBufSize = DFLT_SOCK_BUF_SIZE; + /** Max number of opened cursors per connection. */ private int maxOpenCursors = DFLT_MAX_OPEN_CURSORS; @@ -57,6 +68,8 @@ public class OdbcConfiguration { endpointAddr = cfg.getEndpointAddress(); maxOpenCursors = cfg.getMaxOpenCursors(); + sockRcvBufSize = cfg.getSocketReceiveBufferSize(); + sockSndBufSize = cfg.getSocketSendBufferSize(); } /** @@ -115,4 +128,55 @@ public class OdbcConfiguration { return this; } + + /** + * Gets socket send buffer size. When set to zero, operation system default will be used. + * <p> + * Defaults to {@link #DFLT_SOCK_BUF_SIZE} + * + * @return Socket send buffer size in bytes. + */ + public int getSocketSendBufferSize() { + return sockSndBufSize; + } + + /** + * Sets socket send buffer size. See {@link #getSocketSendBufferSize()} for more information. + * + * @param sockSndBufSize Socket send buffer size in bytes. + * @return This instance for chaining. + */ + public OdbcConfiguration setSocketSendBufferSize(int sockSndBufSize) { + this.sockSndBufSize = sockSndBufSize; + + return this; + } + + /** + * Gets socket receive buffer size. When set to zero, operation system default will be used. + * <p> + * Defaults to {@link #DFLT_SOCK_BUF_SIZE}. + * + * @return Socket receive buffer size in bytes. + */ + public int getSocketReceiveBufferSize() { + return sockRcvBufSize; + } + + /** + * Sets socket receive buffer size. See {@link #getSocketReceiveBufferSize()} for more information. + * + * @param sockRcvBufSize Socket receive buffer size in bytes. + * @return This instance for chaining. + */ + public OdbcConfiguration setSocketReceiveBufferSize(int sockRcvBufSize) { + this.sockRcvBufSize = sockRcvBufSize; + + return this; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(OdbcConfiguration.class, this); + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/d65228e4/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java index ead8901..adfdc22 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java @@ -46,9 +46,6 @@ public class OdbcProcessor extends GridProcessorAdapter { /** Default TCP direct buffer flag. */ private static final boolean DFLT_TCP_DIRECT_BUF = false; - /** Default socket send and receive buffer size. */ - private static final int DFLT_SOCK_BUF_SIZE = 32 * 1024; - /** Busy lock. */ private final GridSpinBusyLock busyLock = new GridSpinBusyLock(); @@ -113,11 +110,10 @@ public class OdbcProcessor extends GridProcessorAdapter { .tcpNoDelay(DFLT_TCP_NODELAY) .directBuffer(DFLT_TCP_DIRECT_BUF) .byteOrder(ByteOrder.nativeOrder()) - .socketSendBufferSize(DFLT_SOCK_BUF_SIZE) - .socketReceiveBufferSize(DFLT_SOCK_BUF_SIZE) + .socketSendBufferSize(odbcCfg.getSocketSendBufferSize()) + .socketReceiveBufferSize(odbcCfg.getSocketReceiveBufferSize()) .filters(new GridNioCodecFilter(new OdbcBufferedParser(), log, false)) .directMode(false) - .idleTimeout(Long.MAX_VALUE) .build(); srv0.start(); http://git-wip-us.apache.org/repos/asf/ignite/blob/d65228e4/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcProcessorValidationSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcProcessorValidationSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcProcessorValidationSelfTest.java index 751f0ae..bb08c6c 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcProcessorValidationSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcProcessorValidationSelfTest.java @@ -94,7 +94,7 @@ public class OdbcProcessorValidationSelfTest extends GridCommonAbstractTest { /** * Test start with invalid address format. * - * @throws Exception + * @throws Exception If failed. */ public void testAddressInvalidFormat() throws Exception { check(new OdbcConfiguration().setEndpointAddress("127.0.0.1:"), false); @@ -115,6 +115,25 @@ public class OdbcProcessorValidationSelfTest extends GridCommonAbstractTest { } /** + * Test connection parameters: sendBufferSize, receiveBufferSize, connectionTimeout. + * + * @throws Exception If failed. + */ + public void testConnectionParams() throws Exception { + check(new OdbcConfiguration().setEndpointAddress("127.0.0.1:9998..10000") + .setSocketSendBufferSize(4 * 1024), true); + + check(new OdbcConfiguration().setEndpointAddress("127.0.0.1:9998..10000") + .setSocketReceiveBufferSize(4 * 1024), true); + + check(new OdbcConfiguration().setEndpointAddress("127.0.0.1:9998..10000") + .setSocketSendBufferSize(-64 * 1024), false); + + check(new OdbcConfiguration().setEndpointAddress("127.0.0.1:9998..10000") + .setSocketReceiveBufferSize(-64 * 1024), false); + } + + /** * Perform check. * * @param odbcCfg ODBC configuration.