You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2013/08/18 03:07:30 UTC
svn commit: r1515054 - in /synapse/trunk/java/modules:
documentation/src/site/xdoc/userguide/transports/
transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/
transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/
...
Author: hiranya
Date: Sun Aug 18 01:07:29 2013
New Revision: 1515054
URL: http://svn.apache.org/r1515054
Log:
Fixing SYNAPSE-824 for nhttp and pt transports
Added:
synapse/trunk/java/modules/transports/core/nhttp/src/test/resources/test-http.properties
Modified:
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/nhttp.xml
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ListenerContext.java
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpListener.java
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpSender.java
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/BaseConfiguration.java
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpConfigConstants.java
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpTransportConfiguration.java
synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/utils/config/HttpTransportConfigurationTest.java
Modified: synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/nhttp.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/nhttp.xml?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/nhttp.xml (original)
+++ synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/nhttp.xml Sun Aug 18 01:07:29 2013
@@ -762,16 +762,41 @@
<th>Default</th>
</tr>
<tr>
- <td>http.socket.timeout</td>
+ <td>http.socket.timeout <a name="http.socket.timeout"/></td>
<td>
Sets the TCP socket timeout in milliseconds
(See <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_TIMEOUT">SO_TIMEOUT</a>).
+ This applies to sockets opened by both transport listener and sender.
<div class="xmlConf">http.socket.timeout=20000</div>
</td>
<td>No</td>
<td>60000</td>
</tr>
<tr>
+ <td>http.socket.timeout.listener</td>
+ <td>
+ Sets the timeout in milliseconds for all the TCP sockets opened by the
+ transport listener. This overrides the value of
+ <a href="#http.socket.timeout">http.socket.timeout</a> for the transport
+ listener.
+ <div class="xmlConf">http.socket.timeout.listener=20000</div>
+ </td>
+ <td>No</td>
+ <td>Value of <a href="#http.socket.timeout">http.socket.timeout</a></td>
+ </tr>
+ <tr>
+ <td>http.socket.timeout.sender</td>
+ <td>
+ Sets the timeout in milliseconds for all the TCP sockets opened by the
+ transport sender. This overrides the value of
+ <a href="#http.socket.timeout">http.socket.timeout</a> for the transport
+ sender.
+ <div class="xmlConf">http.socket.timeout.sender=20000</div>
+ </td>
+ <td>No</td>
+ <td>Value of <a href="#http.socket.timeout">http.socket.timeout</a></td>
+ </tr>
+ <tr>
<td>http.connection.timeout</td>
<td>
Sets the TCP connection timeout in milliseconds. This determines the timeout
Modified: synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml (original)
+++ synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/transports/pass_through.xml Sun Aug 18 01:07:29 2013
@@ -749,16 +749,41 @@
<th>Default</th>
</tr>
<tr>
- <td>http.socket.timeout</td>
+ <td>http.socket.timeout <a name="http.socket.timeout"/></td>
<td>
Sets the TCP socket timeout in milliseconds
(See <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_TIMEOUT">SO_TIMEOUT</a>).
+ This applies to sockets opened by both transport listener and sender.
<div class="xmlConf">http.socket.timeout=20000</div>
</td>
<td>No</td>
<td>60000</td>
</tr>
<tr>
+ <td>http.socket.timeout.listener</td>
+ <td>
+ Sets the timeout in milliseconds for all the TCP sockets opened by the
+ transport listener. This overrides the value of
+ <a href="#http.socket.timeout">http.socket.timeout</a> for the transport
+ listener.
+ <div class="xmlConf">http.socket.timeout.listener=20000</div>
+ </td>
+ <td>No</td>
+ <td>Value of <a href="#http.socket.timeout">http.socket.timeout</a></td>
+ </tr>
+ <tr>
+ <td>http.socket.timeout.sender</td>
+ <td>
+ Sets the timeout in milliseconds for all the TCP sockets opened by the
+ transport sender. This overrides the value of
+ <a href="#http.socket.timeout">http.socket.timeout</a> for the transport
+ sender.
+ <div class="xmlConf">http.socket.timeout.sender=20000</div>
+ </td>
+ <td>No</td>
+ <td>Value of <a href="#http.socket.timeout">http.socket.timeout</a></td>
+ </tr>
+ <tr>
<td>http.connection.timeout</td>
<td>
Sets the TCP connection timeout in milliseconds. This determines the timeout
Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java Sun Aug 18 01:07:29 2013
@@ -255,7 +255,7 @@ public class HttpCoreNIOSender extends A
private IOReactorConfig getReactorConfig() {
NHttpConfiguration cfg = NHttpConfiguration.getInstance();
- return cfg.getReactorConfig();
+ return cfg.getConnectingReactorConfig();
}
/**
Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ListenerContext.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ListenerContext.java?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ListenerContext.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ListenerContext.java Sun Aug 18 01:07:29 2013
@@ -243,7 +243,7 @@ public class ListenerContext {
public IOReactorConfig getReactorConfig() {
NHttpConfiguration cfg = NHttpConfiguration.getInstance();
- return cfg.getReactorConfig();
+ return cfg.getListeningReactorConfig();
}
public ConfigurationContext getCfgCtx() {
Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpListener.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpListener.java?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpListener.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpListener.java Sun Aug 18 01:07:29 2013
@@ -143,7 +143,7 @@ public class PassThroughHttpListener imp
try {
String prefix = namePrefix + "-PT-Listener I/O Dispatcher";
ioReactor = new DefaultListeningIOReactor(
- sourceConfiguration.getReactorConfig(),
+ sourceConfiguration.getReactorConfig(true),
new NativeThreadFactory(new ThreadGroup(prefix + " Thread Group"), prefix));
ioReactor.setExceptionHandler(new IOReactorExceptionHandler() {
Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpSender.java?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpSender.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/PassThroughHttpSender.java Sun Aug 18 01:07:29 2013
@@ -174,7 +174,7 @@ public class PassThroughHttpSender exten
String prefix = namePrefix + "-PT-Sender I/O Dispatcher";
ioReactor = new DefaultConnectingIOReactor(
- targetConfiguration.getReactorConfig(),
+ targetConfiguration.getReactorConfig(false),
new NativeThreadFactory(new ThreadGroup(prefix + " Thread Group"), prefix));
ioReactor.setExceptionHandler(new IOReactorExceptionHandler() {
Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/BaseConfiguration.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/BaseConfiguration.java?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/BaseConfiguration.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/BaseConfiguration.java Sun Aug 18 01:07:29 2013
@@ -78,8 +78,12 @@ public abstract class BaseConfiguration
abstract protected HttpProcessor initHttpProcessor();
- public IOReactorConfig getReactorConfig() {
- return conf.getReactorConfig();
+ public IOReactorConfig getReactorConfig(boolean listener) {
+ if (listener) {
+ return conf.getListeningReactorConfig();
+ } else {
+ return conf.getConnectingReactorConfig();
+ }
}
public ConnectionConfig getConnectionConfig() {
Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpConfigConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpConfigConstants.java?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpConfigConstants.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpConfigConstants.java Sun Aug 18 01:07:29 2013
@@ -30,6 +30,8 @@ public class HttpConfigConstants {
public static final String SO_LINGER = "http.socket.linger";
public static final String SO_REUSEADDR = "http.socket.reuseaddr";
public static final String SO_TIMEOUT = "http.socket.timeout";
+ public static final String LISTENER_SO_TIMEOUT = "http.socket.timeout.listener";
+ public static final String SENDER_SO_TIMEOUT = "http.socket.timeout.sender";
public static final String SELECT_INTERVAL = "http.nio.select-interval";
public static final String HTTP_MALFORMED_INPUT_ACTION = "http.malformed.input.action";
Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpTransportConfiguration.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpTransportConfiguration.java?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpTransportConfiguration.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/utils/config/HttpTransportConfiguration.java Sun Aug 18 01:07:29 2013
@@ -58,14 +58,45 @@ public abstract class HttpTransportConfi
abstract protected int getThreadsPerReactor();
/**
- * Get the IOReactor configuration
+ * Get the listening I/O reactor configuration
*
* @return A fully initialized IOReactorConfig instance
*/
- public IOReactorConfig getReactorConfig() {
+ public IOReactorConfig getListeningReactorConfig() {
IOReactorConfig.Builder builder = IOReactorConfig.custom()
.setIoThreadCount(getThreadsPerReactor())
- .setSoTimeout(getIntProperty(HttpConfigConstants.SO_TIMEOUT, 60000))
+ .setSoTimeout(getIntProperty(HttpConfigConstants.LISTENER_SO_TIMEOUT,
+ getIntProperty(HttpConfigConstants.SO_TIMEOUT, 60000)))
+ .setConnectTimeout(getIntProperty(HttpConfigConstants.CONNECTION_TIMEOUT, 0))
+ .setInterestOpQueued(getBooleanProperty(HttpConfigConstants.INTEREST_OPS_QUEUEING, false))
+ .setTcpNoDelay(getBooleanProperty(HttpConfigConstants.TCP_NODELAY, true))
+ .setRcvBufSize(getIntProperty(HttpConfigConstants.SOCKET_RCV_BUFFER_SIZE, 8 * 1024))
+ .setSndBufSize(getIntProperty(HttpConfigConstants.SOCKET_SND_BUFFER_SIZE, 8 * 1024));
+
+ if (getIntProperty(HttpConfigConstants.SO_LINGER) != null) {
+ builder.setSoLinger(getIntProperty(HttpConfigConstants.SO_LINGER));
+ }
+
+ if (getBooleanProperty(HttpConfigConstants.SO_REUSEADDR) != null) {
+ builder.setSoReuseAddress(getBooleanProperty(HttpConfigConstants.SO_REUSEADDR));
+ }
+
+ if (getIntProperty(HttpConfigConstants.SELECT_INTERVAL) != null) {
+ builder.setSelectInterval(getIntProperty(HttpConfigConstants.SELECT_INTERVAL));
+ }
+ return builder.build();
+ }
+
+ /**
+ * Get the connecting I/O reactor configuration
+ *
+ * @return A fully initialized IOReactorConfig instance
+ */
+ public IOReactorConfig getConnectingReactorConfig() {
+ IOReactorConfig.Builder builder = IOReactorConfig.custom()
+ .setIoThreadCount(getThreadsPerReactor())
+ .setSoTimeout(getIntProperty(HttpConfigConstants.SENDER_SO_TIMEOUT,
+ getIntProperty(HttpConfigConstants.SO_TIMEOUT, 60000)))
.setConnectTimeout(getIntProperty(HttpConfigConstants.CONNECTION_TIMEOUT, 0))
.setInterestOpQueued(getBooleanProperty(HttpConfigConstants.INTEREST_OPS_QUEUEING, false))
.setTcpNoDelay(getBooleanProperty(HttpConfigConstants.TCP_NODELAY, true))
Modified: synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/utils/config/HttpTransportConfigurationTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/utils/config/HttpTransportConfigurationTest.java?rev=1515054&r1=1515053&r2=1515054&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/utils/config/HttpTransportConfigurationTest.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/test/java/org/apache/synapse/transport/utils/config/HttpTransportConfigurationTest.java Sun Aug 18 01:07:29 2013
@@ -33,7 +33,16 @@ public class HttpTransportConfigurationT
assertEquals("barValue", config.getStringProperty("bar", "barValue"));
assertEquals(true, (boolean) config.getBooleanProperty("baz", true));
- IOReactorConfig reactorConfig = config.getReactorConfig();
+ IOReactorConfig reactorConfig = config.getListeningReactorConfig();
+ assertEquals(2, reactorConfig.getIoThreadCount());
+ assertEquals(0, reactorConfig.getConnectTimeout());
+ assertEquals(1024 * 8, reactorConfig.getRcvBufSize());
+ assertEquals(1024 * 8, reactorConfig.getSndBufSize());
+ assertEquals(60000, reactorConfig.getSoTimeout());
+ assertEquals(true, reactorConfig.isTcpNoDelay());
+ assertEquals(false, reactorConfig.isInterestOpQueued());
+
+ reactorConfig = config.getConnectingReactorConfig();
assertEquals(2, reactorConfig.getIoThreadCount());
assertEquals(0, reactorConfig.getConnectTimeout());
assertEquals(1024 * 8, reactorConfig.getRcvBufSize());
@@ -54,7 +63,7 @@ public class HttpTransportConfigurationT
assertEquals("Testing", config.getStringProperty("test.bar", "NotTesting"));
assertEquals(true, (boolean) config.getBooleanProperty("test.baz", false));
- IOReactorConfig reactorConfig = config.getReactorConfig();
+ IOReactorConfig reactorConfig = config.getListeningReactorConfig();
assertEquals(true, reactorConfig.isSoReuseAddress());
assertEquals(2, reactorConfig.getIoThreadCount());
assertEquals(0, reactorConfig.getConnectTimeout());
@@ -70,6 +79,28 @@ public class HttpTransportConfigurationT
assertEquals(CodingErrorAction.REPORT, connConfig.getUnmappableInputAction());
}
+ public void testTimeoutConfig() {
+ HttpTransportConfiguration config = new SimpleHttpTransportConfiguration("test-http");
+
+ IOReactorConfig reactorConfig = config.getListeningReactorConfig();
+ assertEquals(30000, reactorConfig.getSoTimeout());
+ assertEquals(2, reactorConfig.getIoThreadCount());
+ assertEquals(0, reactorConfig.getConnectTimeout());
+ assertEquals(1024 * 8, reactorConfig.getRcvBufSize());
+ assertEquals(1024 * 8, reactorConfig.getSndBufSize());
+ assertEquals(true, reactorConfig.isTcpNoDelay());
+ assertEquals(false, reactorConfig.isInterestOpQueued());
+
+ reactorConfig = config.getConnectingReactorConfig();
+ assertEquals(20000, reactorConfig.getSoTimeout());
+ assertEquals(2, reactorConfig.getIoThreadCount());
+ assertEquals(0, reactorConfig.getConnectTimeout());
+ assertEquals(1024 * 8, reactorConfig.getRcvBufSize());
+ assertEquals(1024 * 8, reactorConfig.getSndBufSize());
+ assertEquals(true, reactorConfig.isTcpNoDelay());
+ assertEquals(false, reactorConfig.isInterestOpQueued());
+ }
+
class SimpleHttpTransportConfiguration extends HttpTransportConfiguration {
public SimpleHttpTransportConfiguration(String fileName) {
super(fileName);
Added: synapse/trunk/java/modules/transports/core/nhttp/src/test/resources/test-http.properties
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/test/resources/test-http.properties?rev=1515054&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/test/resources/test-http.properties (added)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/test/resources/test-http.properties Sun Aug 18 01:07:29 2013
@@ -0,0 +1,9 @@
+# Used in HttpTransportConfigurationTest
+
+http.socket.timeout=60000
+http.socket.timeout.listener=30000
+http.socket.timeout.sender=20000
+http.connection.timeout=0
+http.socket.buffer-size=8192
+http.tcp.nodelay=true
+http.nio.interest-ops-queueing=false