Author: kwall Date: Wed Mar 18 09:58:54 2015 New Revision: 1667475 URL: http://svn.apache.org/r1667475 Log: QPID-6429 : [Java Broker] Make maxidle/last read/write times volatile to avoid the risk of spurious disconnection owing to unsafe publication between threads
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java?rev=1667475&r1=1667474&r2=1667475&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java (original) +++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java Wed Mar 18 09:58:54 2015 @@ -71,8 +71,8 @@ public class NonBlockingConnection imple private final Runnable _onTransportEncryptionAction; - private int _maxReadIdle; - private int _maxWriteIdle; + private volatile int _maxReadIdle; + private volatile int _maxWriteIdle; private Principal _principal; private boolean _principalChecked; Modified: qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java?rev=1667475&r1=1667474&r2=1667475&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java (original) +++ qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java Wed Mar 18 09:58:54 2015 @@ -58,8 +58,8 @@ public class ProtocolEngine_0_10 extend private ServerConnection _connection; private long _createTime = System.currentTimeMillis(); - private long _lastReadTime = _createTime; - private long _lastWriteTime = _createTime; + private volatile long _lastReadTime = _createTime; + private volatile long _lastWriteTime = _createTime; private volatile boolean _transportBlockedForWriting; private final AtomicReference<Thread> _messageAssignmentSuspended = new AtomicReference<>(); Modified: qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java?rev=1667475&r1=1667474&r2=1667475&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java (original) +++ qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java Wed Mar 18 09:58:54 2015 @@ -173,7 +173,7 @@ public class AMQProtocolEngine implement private LogSubject _logSubject; - private long _lastIoTime; + private volatile long _lastIoTime; private long _writtenBytes; @@ -186,10 +186,10 @@ public class AMQProtocolEngine implement private ByteBufferSender _sender; private volatile boolean _deferFlush; - private long _lastReceivedTime = System.currentTimeMillis(); + private volatile long _lastReceivedTime = System.currentTimeMillis(); + private volatile long _lastWriteTime = System.currentTimeMillis(); private boolean _blocking; - private AtomicLong _lastWriteTime = new AtomicLong(System.currentTimeMillis()); private final Broker<?> _broker; private final Transport _transport; @@ -557,7 +557,7 @@ public class AMQProtocolEngine implement final long time = System.currentTimeMillis(); _lastIoTime = time; - _lastWriteTime.set(time); + _lastWriteTime = time; if(!_deferFlush) { @@ -1922,7 +1922,7 @@ public class AMQProtocolEngine implement @Override public long getLastWriteTime() { - return _lastWriteTime.get(); + return _lastWriteTime; } public boolean isCloseWhenNoRoute() Modified: qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java?rev=1667475&r1=1667474&r2=1667475&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java (original) +++ qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngine_1_0_0_SASL.java Wed Mar 18 09:58:54 2015 @@ -79,8 +79,8 @@ public class ProtocolEngine_1_0_0_SASL i private long _readBytes; private long _writtenBytes; - private long _lastReadTime; - private long _lastWriteTime; + private volatile long _lastReadTime; + private volatile long _lastWriteTime; private final Broker<?> _broker; private long _createTime = System.currentTimeMillis(); private ConnectionEndpoint _endpoint; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org