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