You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/03/26 16:36:32 UTC

svn commit: r1581889 - in /tomcat/trunk/java/org/apache/coyote/http11: InternalAprInputBuffer.java InternalAprOutputBuffer.java InternalNioOutputBuffer.java upgrade/AprServletInputStream.java upgrade/AprServletOutputStream.java

Author: markt
Date: Wed Mar 26 15:36:31 2014
New Revision: 1581889

URL: http://svn.apache.org/r1581889
Log:
Locks should be outside try/finally

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java
    tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java

Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1581889&r1=1581888&r2=1581889&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Wed Mar 26 15:36:31 2014
@@ -623,8 +623,8 @@ public class InternalAprInputBuffer exte
 
         boolean readDone = false;
         int result = 0;
+        readLock.lock();
         try {
-            readLock.lock();
             if (wrapper.getBlockingStatus() == block) {
                 result = Socket.recvbb(socket, 0, buf.length - lastValid);
                 readDone = true;
@@ -634,8 +634,8 @@ public class InternalAprInputBuffer exte
         }
 
         if (!readDone) {
+            writeLock.lock();
             try {
-                writeLock.lock();
                 wrapper.setBlockingStatus(block);
                 // Set the current settings for this socket
                 if (block) {
@@ -645,8 +645,8 @@ public class InternalAprInputBuffer exte
                     Socket.timeoutSet(socket, 0);
                 }
                 // Downgrade the lock
+                readLock.lock();
                 try {
-                    readLock.lock();
                     writeLock.unlock();
                     result = Socket.recvbb(socket, 0, buf.length - lastValid);
                 } finally {

Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java?rev=1581889&r1=1581888&r2=1581889&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java Wed Mar 26 15:36:31 2014
@@ -239,8 +239,8 @@ public class InternalAprOutputBuffer ext
         Lock readLock = wrapper.getBlockingStatusReadLock();
         WriteLock writeLock = wrapper.getBlockingStatusWriteLock();
 
+        readLock.lock();
         try {
-            readLock.lock();
             if (wrapper.getBlockingStatus() == block) {
                 writeToSocket();
                 return;
@@ -249,8 +249,8 @@ public class InternalAprOutputBuffer ext
             readLock.unlock();
         }
 
+        writeLock.lock();
         try {
-            writeLock.lock();
             // Set the current settings for this socket
             wrapper.setBlockingStatus(block);
             if (block) {
@@ -260,8 +260,8 @@ public class InternalAprOutputBuffer ext
             }
 
             // Downgrade the lock
+            readLock.lock();
             try {
-                readLock.lock();
                 writeLock.unlock();
                 writeToSocket();
             } finally {

Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java?rev=1581889&r1=1581888&r2=1581889&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java Wed Mar 26 15:36:31 2014
@@ -141,7 +141,7 @@ public class InternalNioOutputBuffer ext
             do {
                 if (socket.flush(true,selector,writeTimeout)) break;
             }while ( true );
-        }finally {
+        } finally {
             if ( selector != null ) pool.put(selector);
         }
         if ( block || bytebuffer.remaining()==0) {

Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java?rev=1581889&r1=1581888&r2=1581889&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java Wed Mar 26 15:36:31 2014
@@ -57,8 +57,8 @@ public class AprServletInputStream exten
 
         boolean readDone = false;
         int result = 0;
+        readLock.lock();
         try {
-            readLock.lock();
             if (wrapper.getBlockingStatus() == block) {
                 result = Socket.recv(socket, b, off, len);
                 readDone = true;
@@ -68,14 +68,14 @@ public class AprServletInputStream exten
         }
 
         if (!readDone) {
+            writeLock.lock();
             try {
-                writeLock.lock();
                 wrapper.setBlockingStatus(block);
                 // Set the current settings for this socket
                 Socket.optSet(socket, Socket.APR_SO_NONBLOCK, (block ? 0 : 1));
                 // Downgrade the lock
+                readLock.lock();
                 try {
-                    readLock.lock();
                     writeLock.unlock();
                     result = Socket.recv(socket, b, off, len);
                 } finally {

Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java?rev=1581889&r1=1581888&r2=1581889&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java Wed Mar 26 15:36:31 2014
@@ -62,8 +62,8 @@ public class AprServletOutputStream exte
         Lock readLock = socketWrapper.getBlockingStatusReadLock();
         WriteLock writeLock = socketWrapper.getBlockingStatusWriteLock();
 
+        readLock.lock();
         try {
-            readLock.lock();
             if (socketWrapper.getBlockingStatus() == block) {
                 return doWriteInternal(b, off, len);
             }
@@ -71,8 +71,8 @@ public class AprServletOutputStream exte
             readLock.unlock();
         }
 
+        writeLock.lock();
         try {
-            writeLock.lock();
             // Set the current settings for this socket
             socketWrapper.setBlockingStatus(block);
             if (block) {
@@ -82,8 +82,8 @@ public class AprServletOutputStream exte
             }
 
             // Downgrade the lock
+            readLock.lock();
             try {
-                readLock.lock();
                 writeLock.unlock();
                 return doWriteInternal(b, off, len);
             } finally {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org