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

Reply via email to