Author: hiranya
Date: Thu Aug 15 01:36:54 2013
New Revision: 1514120

URL: http://svn.apache.org/r1514120
Log:
Fixing a race condition in SourceHandler - related to the failure in Sampe150 
test case (WSDL generation)

Modified:
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/jmx/ConnectionsView.java

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java?rev=1514120&r1=1514119&r2=1514120&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java
 Thu Aug 15 01:36:54 2013
@@ -193,13 +193,15 @@ public class SourceHandler implements NH
                 synchronized (conn.getContext()) {
                     // SimpleOutputBuffer is not thread safe
                     // Explicit synchronization required
-                    int bytesWritten = outBuf.produceContent(encoder);
-                    if (metrics != null && bytesWritten > 0) {
-                        metrics.incrementBytesSent(bytesWritten);
+                    if (outBuf.hasData()) {
+                        int bytesWritten = outBuf.produceContent(encoder);
+                        if (metrics != null && bytesWritten > 0) {
+                            metrics.incrementBytesSent(bytesWritten);
+                        }
                     }
 
                     conn.requestInput();
-                    if (!outBuf.hasData()) {
+                    if (!outBuf.hasData() && encoder.isCompleted()) {
                         // We are done - At this point the entire response 
payload has been
                         // written out to the SimpleOutputBuffer
                         
sourceConfiguration.getSourceConnections().releaseConnection(conn);

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/jmx/ConnectionsView.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/jmx/ConnectionsView.java?rev=1514120&r1=1514119&r2=1514120&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/jmx/ConnectionsView.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/jmx/ConnectionsView.java
 Thu Aug 15 01:36:54 2013
@@ -229,7 +229,7 @@ public class ConnectionsView implements 
     }
 
     /**
-     * Return the number of total connections opened during last 'n' munites
+     * Return the number of total connections opened during last 'n' minutes
      * of execution
      *
      * @param n Number of minutes in the execution history


Reply via email to