Author: markt Date: Sun Feb 15 09:44:12 2015 New Revision: 1659906 URL: http://svn.apache.org/r1659906 Log: Make readTimeout and wrietTimeout volatile because they are written on a different thread than they are read on within a single request.
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1659906&r1=1659905&r2=1659906&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Sun Feb 15 09:44:12 2015 @@ -37,12 +37,15 @@ public abstract class SocketWrapperBase< private volatile E socket; private final AbstractEndpoint<E> endpoint; + // Volatile because I/O and setting the timeout values occurs on a different + // thread to the thread checking the timeout. private volatile long lastRead = System.currentTimeMillis(); private volatile long lastWrite = lastRead; private volatile long lastAsyncStart = 0; private volatile long asyncTimeout = -1; - private long readTimeout = -1; - private long writeTimeout = -1; + private volatile long readTimeout = -1; + private volatile long writeTimeout = -1; + private IOException error = null; private volatile int keepAliveLeft = 100; private volatile boolean async = false; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org