# IGNITE-709 Set correct socket timeouts.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1132d225 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1132d225 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1132d225 Branch: refs/heads/ignite-709_2 Commit: 1132d2259a3a33328cd66ebdff0761bdf1b5c1bb Parents: 6bd3bff Author: sevdokimov <sevdoki...@gridgain.com> Authored: Mon May 18 12:09:24 2015 +0300 Committer: sevdokimov <sevdoki...@gridgain.com> Committed: Mon May 18 12:09:24 2015 +0300 ---------------------------------------------------------------------- .../discovery/tcp/TcpClientDiscoverySpi.java | 22 ++++++++++++++------ .../spi/discovery/tcp/TcpDiscoverySpi.java | 21 ++++++++++++++----- .../discovery/tcp/TcpDiscoverySpiAdapter.java | 22 +++++++++++++------- 3 files changed, 46 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1132d225/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java index 7925de6..4438092 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java @@ -61,6 +61,12 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp /** Default disconnect check interval. */ public static final long DFLT_DISCONNECT_CHECK_INT = 2000; + /** Default socket operations timeout in milliseconds (value is <tt>700ms</tt>). */ + public static final long DFLT_SOCK_TIMEOUT = 700; + + /** Default timeout for receiving message acknowledgement in milliseconds (value is <tt>700ms</tt>). */ + public static final long DFLT_ACK_TIMEOUT = 700; + /** */ private static final Object JOIN_TIMEOUT = "JOIN_TIMEOUT"; @@ -112,6 +118,14 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp /** */ private MessageWorker msgWorker; + /** + * Default constructor. + */ + public TcpClientDiscoverySpi() { + ackTimeout = DFLT_ACK_TIMEOUT; + sockTimeout = DFLT_SOCK_TIMEOUT; + } + /** {@inheritDoc} */ @Override public long getDisconnectCheckInterval() { return disconnectCheckInt; @@ -211,13 +225,9 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp @Override public void spiStart(@Nullable String gridName) throws IgniteSpiException { startStopwatch(); - assertParameter(ipFinder != null, "ipFinder != null"); - assertParameter(netTimeout > 0, "networkTimeout > 0"); - assertParameter(sockTimeout > 0, "sockTimeout > 0"); - assertParameter(ackTimeout > 0, "ackTimeout > 0"); - assertParameter(hbFreq > 0, "heartbeatFreq > 0"); + checkParameters(); + assertParameter(threadPri > 0, "threadPri > 0"); - assertParameter(joinTimeout >= 0, "joinTimeout >= 0"); try { locHost = U.resolveLocalHost(locAddr); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1132d225/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java index b480176..571af20 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java @@ -171,6 +171,12 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov /** Maximum ack timeout value for receiving message acknowledgement in milliseconds (value is <tt>600,000ms</tt>). */ public static final long DFLT_MAX_ACK_TIMEOUT = 10 * 60 * 1000; + /** Default socket operations timeout in milliseconds (value is <tt>200ms</tt>). */ + public static final long DFLT_SOCK_TIMEOUT = 200; + + /** Default timeout for receiving message acknowledgement in milliseconds (value is <tt>200ms</tt>). */ + public static final long DFLT_ACK_TIMEOUT = 200; + /** Node attribute that is mapped to node's external addresses (value is <tt>disc.tcp.ext-addrs</tt>). */ public static final String ATTR_EXT_ADDRS = "disc.tcp.ext-addrs"; @@ -297,6 +303,14 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov private final CopyOnWriteArrayList<IgniteInClosure<Socket>> incomeConnLsnrs = new CopyOnWriteArrayList<>(); + /** + * Default constructor. + */ + public TcpDiscoverySpi() { + ackTimeout = DFLT_ACK_TIMEOUT; + sockTimeout = DFLT_SOCK_TIMEOUT; + } + /** {@inheritDoc} */ @IgniteInstanceResource @Override public void injectResources(Ignite ignite) { @@ -794,17 +808,14 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov private void onSpiStart() throws IgniteSpiException { startStopwatch(); - assertParameter(ipFinder != null, "ipFinder != null"); + checkParameters(); + assertParameter(ipFinderCleanFreq > 0, "ipFinderCleanFreq > 0"); assertParameter(locPort > 1023, "localPort > 1023"); assertParameter(locPortRange >= 0, "localPortRange >= 0"); assertParameter(locPort + locPortRange <= 0xffff, "locPort + locPortRange <= 0xffff"); - assertParameter(netTimeout > 0, "networkTimeout > 0"); - assertParameter(sockTimeout > 0, "sockTimeout > 0"); - assertParameter(ackTimeout > 0, "ackTimeout > 0"); assertParameter(maxAckTimeout > ackTimeout, "maxAckTimeout > ackTimeout"); assertParameter(reconCnt > 0, "reconnectCnt > 0"); - assertParameter(hbFreq > 0, "heartbeatFreq > 0"); assertParameter(maxMissedHbs > 0, "maxMissedHeartbeats > 0"); assertParameter(maxMissedClientHbs > 0, "maxMissedClientHeartbeats > 0"); assertParameter(threadPri > 0, "threadPri > 0"); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1132d225/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java index b4c90cf..1ed2462 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java @@ -49,12 +49,6 @@ abstract class TcpDiscoverySpiAdapter extends IgniteSpiAdapter implements Discov /** Default port to listen (value is <tt>47500</tt>). */ public static final int DFLT_PORT = 47500; - /** Default socket operations timeout in milliseconds (value is <tt>200ms</tt>). */ - public static final long DFLT_SOCK_TIMEOUT = 200; - - /** Default timeout for receiving message acknowledgement in milliseconds (value is <tt>200ms</tt>). */ - public static final long DFLT_ACK_TIMEOUT = 200; - /** Default network timeout in milliseconds (value is <tt>5000ms</tt>). */ public static final long DFLT_NETWORK_TIMEOUT = 5000; @@ -86,10 +80,10 @@ abstract class TcpDiscoverySpiAdapter extends IgniteSpiAdapter implements Discov protected TcpDiscoveryIpFinder ipFinder; /** Socket operations timeout. */ - protected long sockTimeout = DFLT_SOCK_TIMEOUT; + protected long sockTimeout; // Must be initialized in the constructor of child class. /** Message acknowledgement timeout. */ - protected long ackTimeout = DFLT_ACK_TIMEOUT; + protected long ackTimeout; // Must be initialized in the constructor of child class. /** Network timeout. */ protected long netTimeout = DFLT_NETWORK_TIMEOUT; @@ -148,6 +142,18 @@ abstract class TcpDiscoverySpiAdapter extends IgniteSpiAdapter implements Discov protected IgniteLogger log; /** + * Check parameters set to this SPI. + */ + protected void checkParameters() { + assertParameter(ipFinder != null, "ipFinder != null"); + assertParameter(hbFreq > 0, "heartbeatFreq > 0"); + assertParameter(netTimeout > 0, "networkTimeout > 0"); + assertParameter(sockTimeout > 0, "sockTimeout > 0"); + assertParameter(ackTimeout > 0, "ackTimeout > 0"); + assertParameter(joinTimeout >= 0, "joinTimeout >= 0"); + } + + /** * Inject resources * * @param ignite Ignite.