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


Reply via email to