From: markt Date: Sun, 19 Jun 2011 17:08:59 +0000 (+0000) Subject: Add missing sync that triggered test failures on Linux VM post re-factoring X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=524d631568cb80cbf24b5a7fd8c4b84d3665cccd;p=tomcat7.0 Add missing sync that triggered test failures on Linux VM post re-factoring git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1137390 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/tomcat/util/net/JIoEndpoint.java b/java/org/apache/tomcat/util/net/JIoEndpoint.java index ec99ebc8f..baf97e82b 100644 --- a/java/org/apache/tomcat/util/net/JIoEndpoint.java +++ b/java/org/apache/tomcat/util/net/JIoEndpoint.java @@ -541,30 +541,32 @@ public class JIoEndpoint extends AbstractEndpoint { public boolean processSocketAsync(SocketWrapper socket, SocketStatus status) { try { - if (waitingRequests.remove(socket)) { - SocketProcessor proc = new SocketProcessor(socket,status); - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - try { - //threads should not be created by the webapp classloader - if (Constants.IS_SECURITY_ENABLED) { - PrivilegedAction pa = new PrivilegedSetTccl( - getClass().getClassLoader()); - AccessController.doPrivileged(pa); - } else { - Thread.currentThread().setContextClassLoader( - getClass().getClassLoader()); - } - // During shutdown, executor may be null - avoid NPE - if (!running) { - return false; - } - getExecutor().execute(proc); - }finally { - if (Constants.IS_SECURITY_ENABLED) { - PrivilegedAction pa = new PrivilegedSetTccl(loader); - AccessController.doPrivileged(pa); - } else { - Thread.currentThread().setContextClassLoader(loader); + synchronized (socket) { + if (waitingRequests.remove(socket)) { + SocketProcessor proc = new SocketProcessor(socket,status); + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + try { + //threads should not be created by the webapp classloader + if (Constants.IS_SECURITY_ENABLED) { + PrivilegedAction pa = new PrivilegedSetTccl( + getClass().getClassLoader()); + AccessController.doPrivileged(pa); + } else { + Thread.currentThread().setContextClassLoader( + getClass().getClassLoader()); + } + // During shutdown, executor may be null - avoid NPE + if (!running) { + return false; + } + getExecutor().execute(proc); + } finally { + if (Constants.IS_SECURITY_ENABLED) { + PrivilegedAction pa = new PrivilegedSetTccl(loader); + AccessController.doPrivileged(pa); + } else { + Thread.currentThread().setContextClassLoader(loader); + } } } }