Author: markt
Date: Tue Jun 10 09:37:39 2014
New Revision: 1601583

URL: http://svn.apache.org/r1601583
Log:
Pull up waitingRequests.
NIO2 used a ConcurrentHashMap whereas BIO and APR/native used a Queue. Switch 
to ConcurrentHashMap for all since what we really want here is a Set (and there 
isn't a ConcurrentHashSet implementation).

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1601583&r1=1601582&r2=1601583&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Tue Jun 
10 09:37:39 2014
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.StringTokenizer;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 
@@ -974,5 +975,7 @@ public abstract class AbstractEndpoint<S
         }
     }
 
+    protected ConcurrentHashMap<SocketWrapper<S>, SocketWrapper<S>> 
waitingRequests =
+            new ConcurrentHashMap<>();
 }
 

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1601583&r1=1601582&r2=1601583&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Tue Jun 10 
09:37:39 2014
@@ -14,7 +14,6 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-
 package org.apache.tomcat.util.net;
 
 import java.util.ArrayList;
@@ -22,7 +21,6 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.Executor;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -95,9 +93,6 @@ public class AprEndpoint extends Abstrac
     protected long sslContext = 0;
 
 
-    protected ConcurrentLinkedQueue<SocketWrapper<Long>> waitingRequests =
-            new ConcurrentLinkedQueue<>();
-
     private final Map<Long,AprSocketWrapper> connections = new 
ConcurrentHashMap<>();
 
     // ------------------------------------------------------------ Constructor
@@ -886,7 +881,7 @@ public class AprEndpoint extends Abstrac
             // result of calling AsyncContext.dispatch() from a non-container
             // thread
             synchronized (socket) {
-                if (waitingRequests.remove(socket)) {
+                if (waitingRequests.remove(socket) != null) {
                     SocketProcessor proc = new SocketProcessor(socket, status);
                     Executor executor = getExecutor();
                     if (dispatch && executor != null) {
@@ -1075,8 +1070,7 @@ public class AprEndpoint extends Abstrac
                     // Ignore
                 }
                 long now = System.currentTimeMillis();
-                Iterator<SocketWrapper<Long>> sockets =
-                    waitingRequests.iterator();
+                Iterator<SocketWrapper<Long>> sockets = 
waitingRequests.keySet().iterator();
                 while (sockets.hasNext()) {
                     SocketWrapper<Long> socket = sockets.next();
                     if (socket.isAsync()) {
@@ -2394,7 +2388,7 @@ public class AprEndpoint extends Abstrac
                     } else if (state == Handler.SocketState.LONG) {
                         socket.access();
                         if (socket.isAsync()) {
-                            waitingRequests.add(socket);
+                            waitingRequests.put(socket, socket);
                         }
                     }
                 }
@@ -2456,7 +2450,7 @@ public class AprEndpoint extends Abstrac
             } else if (state == Handler.SocketState.LONG) {
                 socket.access();
                 if (socket.isAsync()) {
-                    waitingRequests.add(socket);
+                    waitingRequests.put(socket, socket);
                 }
             } else if (state == Handler.SocketState.ASYNC_END) {
                 socket.access();

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java?rev=1601583&r1=1601582&r2=1601583&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java Tue Jun 10 
09:37:39 2014
@@ -14,7 +14,6 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-
 package org.apache.tomcat.util.net;
 
 import java.io.IOException;
@@ -23,7 +22,6 @@ import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketException;
 import java.util.Iterator;
-import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.Executor;
 import java.util.concurrent.RejectedExecutionException;
 
@@ -164,8 +162,7 @@ public class JIoEndpoint extends Abstrac
                     // Ignore
                 }
                 long now = System.currentTimeMillis();
-                Iterator<SocketWrapper<Socket>> sockets =
-                    waitingRequests.iterator();
+                Iterator<SocketWrapper<Socket>> sockets = 
waitingRequests.keySet().iterator();
                 while (sockets.hasNext()) {
                     SocketWrapper<Socket> socket = sockets.next();
                     if (socket.isAsync()) {
@@ -347,7 +344,7 @@ public class JIoEndpoint extends Abstrac
                         launch = true;
                     } else if (state == SocketState.LONG) {
                         socket.access();
-                        waitingRequests.add(socket);
+                        waitingRequests.put(socket, socket);
                     }
                 } finally {
                     if (launch) {
@@ -562,7 +559,7 @@ public class JIoEndpoint extends Abstrac
             // result of calling AsyncContext.dispatch() from a non-container
             // thread
             synchronized (socket) {
-                if (waitingRequests.remove(socket)) {
+                if (waitingRequests.remove(socket) != null) {
                     SocketProcessor proc = new SocketProcessor(socket,status);
                     Executor executor = getExecutor();
                     if (dispatch && executor != null) {
@@ -586,9 +583,6 @@ public class JIoEndpoint extends Abstrac
         }
     }
 
-    protected ConcurrentLinkedQueue<SocketWrapper<Socket>> waitingRequests =
-            new ConcurrentLinkedQueue<>();
-
     @Override
     protected Log getLog() {
         return log;

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1601583&r1=1601582&r2=1601583&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Tue Jun 10 
09:37:39 2014
@@ -31,7 +31,6 @@ import java.nio.channels.CompletionHandl
 import java.nio.channels.FileChannel;
 import java.nio.file.StandardOpenOption;
 import java.util.Iterator;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.RejectedExecutionException;
@@ -874,9 +873,6 @@ public class Nio2Endpoint extends Abstra
         public void onCreateSSLEngine(SSLEngine engine);
     }
 
-    protected ConcurrentHashMap<SocketWrapper<Nio2Channel>, 
SocketWrapper<Nio2Channel>> waitingRequests =
-            new ConcurrentHashMap<>();
-
     /**
      * The completion handler used for asynchronous read operations
      */



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

Reply via email to