From 46125686874f5b69bcdb6f4c9bef3f900a7057c6 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Mon, 27 Feb 2012 12:56:18 -0800 Subject: [PATCH 1/2] Fix #204 - Increate the granularity of connect timeout in NIO * Changed the Selector timeout from 500 to 10 so that the timeout is checked every 10 milliseconds --- .../java/io/netty/channel/sctp/SctpClientPipelineSink.java | 6 +++--- .../channel/socket/nio/NioClientSocketPipelineSink.java | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/transport-sctp/src/main/java/io/netty/channel/sctp/SctpClientPipelineSink.java b/transport-sctp/src/main/java/io/netty/channel/sctp/SctpClientPipelineSink.java index 363407f7d5..b72c4f5cb6 100644 --- a/transport-sctp/src/main/java/io/netty/channel/sctp/SctpClientPipelineSink.java +++ b/transport-sctp/src/main/java/io/netty/channel/sctp/SctpClientPipelineSink.java @@ -262,7 +262,7 @@ class SctpClientPipelineSink extends AbstractChannelSink { wakenUp.set(false); try { - int selectedKeyCount = selector.select(500); + int selectedKeyCount = selector.select(10); // 'wakenUp.compareAndSet(false, true)' is always evaluated // before calling 'selector.wakeup()' to reduce the wake-up @@ -302,9 +302,9 @@ class SctpClientPipelineSink extends AbstractChannelSink { processSelectedKeys(selector.selectedKeys()); } - // Handle connection timeout every 0.5 seconds approximately. + // Handle connection timeout every 10 milliseconds approximately. long currentTimeNanos = System.nanoTime(); - if (currentTimeNanos - lastConnectTimeoutCheckTimeNanos >= 500 * 1000000L) { + if (currentTimeNanos - lastConnectTimeoutCheckTimeNanos >= 10 * 1000000L) { lastConnectTimeoutCheckTimeNanos = currentTimeNanos; processConnectTimeout(selector.keys(), currentTimeNanos); } diff --git a/transport/src/main/java/io/netty/channel/socket/nio/NioClientSocketPipelineSink.java b/transport/src/main/java/io/netty/channel/socket/nio/NioClientSocketPipelineSink.java index ca2333659f..39b2a73ed4 100644 --- a/transport/src/main/java/io/netty/channel/socket/nio/NioClientSocketPipelineSink.java +++ b/transport/src/main/java/io/netty/channel/socket/nio/NioClientSocketPipelineSink.java @@ -242,7 +242,7 @@ class NioClientSocketPipelineSink extends AbstractChannelSink { wakenUp.set(false); try { - int selectedKeyCount = selector.select(500); + int selectedKeyCount = selector.select(10); // 'wakenUp.compareAndSet(false, true)' is always evaluated // before calling 'selector.wakeup()' to reduce the wake-up @@ -282,9 +282,9 @@ class NioClientSocketPipelineSink extends AbstractChannelSink { processSelectedKeys(selector.selectedKeys()); } - // Handle connection timeout every 0.5 seconds approximately. + // Handle connection timeout every 10 milliseconds approximately. long currentTimeNanos = System.nanoTime(); - if (currentTimeNanos - lastConnectTimeoutCheckTimeNanos >= 500 * 1000000L) { + if (currentTimeNanos - lastConnectTimeoutCheckTimeNanos >= 10 * 1000000L) { lastConnectTimeoutCheckTimeNanos = currentTimeNanos; processConnectTimeout(selector.keys(), currentTimeNanos); } From 2984f26f978bc6fd74bb3c31a7e66b034798017a Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Mon, 27 Feb 2012 13:02:42 -0800 Subject: [PATCH 2/2] Decreased all selector timeout from 500 ms to 10 ms See #204 --- .../src/main/java/io/netty/channel/socket/nio/SelectorUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transport/src/main/java/io/netty/channel/socket/nio/SelectorUtil.java b/transport/src/main/java/io/netty/channel/socket/nio/SelectorUtil.java index 51c8bbaa8c..049559c377 100644 --- a/transport/src/main/java/io/netty/channel/socket/nio/SelectorUtil.java +++ b/transport/src/main/java/io/netty/channel/socket/nio/SelectorUtil.java @@ -30,7 +30,7 @@ final class SelectorUtil { static void select(Selector selector) throws IOException { try { - selector.select(500); + selector.select(10); } catch (CancelledKeyException e) { if (logger.isDebugEnabled()) { logger.debug(