Author: kwall Date: Wed Jan 9 15:42:10 2013 New Revision: 1430904 URL: http://svn.apache.org/viewvc?rev=1430904&view=rev Log: QPID-4503: Producer transaction timeout detection feature may produce suprious open/idle alerts and close client connections/sessions without good cause
Merged from trunk with command svn merge -c 1421884 https://svn.apache.org/repos/asf/qpid/trunk/qpid/java Modified: qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java Modified: qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java URL: http://svn.apache.org/viewvc/qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java?rev=1430904&r1=1430903&r2=1430904&view=diff ============================================================================== --- qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java (original) +++ qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java Wed Jan 9 15:42:10 2013 @@ -70,7 +70,6 @@ import org.apache.qpid.server.message.Me import org.apache.qpid.server.message.ServerMessage; import org.apache.qpid.server.output.ProtocolOutputConverter; import org.apache.qpid.server.protocol.AMQConnectionModel; -import org.apache.qpid.server.protocol.AMQProtocolEngine; import org.apache.qpid.server.protocol.AMQProtocolSession; import org.apache.qpid.server.protocol.AMQSessionModel; import org.apache.qpid.server.queue.AMQQueue; @@ -113,7 +112,7 @@ public class AMQChannel implements AMQSe */ private long _deliveryTag = 0; - /** A channel has a default queue (the last declared) that is used when no queue name is explictily set */ + /** A channel has a default queue (the last declared) that is used when no queue name is explicitly set */ private AMQQueue _defaultQueue; /** This tag is unique per subscription to a queue. The server returns this in response to a basic.consume request. */ @@ -209,10 +208,6 @@ public class AMQChannel implements AMQSe } - public boolean inTransaction() - { - return isTransactional() && _txnUpdateTime.get() > 0 && _transaction.getTransactionStartTime() > 0; - } private void incrementOutstandingTxnsIfNecessary() { @@ -1487,11 +1482,13 @@ public class AMQChannel implements AMQSe public void checkTransactionStatus(long openWarn, long openClose, long idleWarn, long idleClose) throws AMQException { - if (inTransaction()) + final long transactionStartTime = _transaction.getTransactionStartTime(); + final long transactionUpdateTime = _txnUpdateTime.get(); + if (isTransactional() && transactionUpdateTime > 0 && transactionStartTime > 0) { long currentTime = System.currentTimeMillis(); - long openTime = currentTime - _transaction.getTransactionStartTime(); - long idleTime = currentTime - _txnUpdateTime.get(); + long openTime = currentTime - transactionStartTime; + long idleTime = currentTime - transactionUpdateTime; _transactionTimeoutHelper.logIfNecessary(idleTime, idleWarn, ChannelMessages.IDLE_TXN(idleTime), TransactionTimeoutHelper.IDLE_TRANSACTION_ALERT); Modified: qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java URL: http://svn.apache.org/viewvc/qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java?rev=1430904&r1=1430903&r2=1430904&view=diff ============================================================================== --- qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java (original) +++ qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java Wed Jan 9 15:42:10 2013 @@ -42,7 +42,6 @@ import javax.security.auth.Subject; import org.apache.qpid.AMQException; import org.apache.qpid.AMQStoreException; import org.apache.qpid.protocol.AMQConstant; -import org.apache.qpid.protocol.ProtocolEngine; import org.apache.qpid.server.TransactionTimeoutHelper; import org.apache.qpid.server.logging.LogActor; import org.apache.qpid.server.logging.LogSubject; @@ -449,11 +448,6 @@ public class ServerSession extends Sessi return _transaction.isTransactional(); } - public boolean inTransaction() - { - return isTransactional() && _txnUpdateTime.get() > 0 && _transaction.getTransactionStartTime() > 0; - } - public void selectTx() { _transaction = new LocalTransaction(this.getMessageStore()); @@ -591,7 +585,7 @@ public class ServerSession extends Sessi /** * Update last transaction activity timestamp */ - public void updateTransactionalActivity() + private void updateTransactionalActivity() { if (isTransactional()) { @@ -709,11 +703,13 @@ public class ServerSession extends Sessi public void checkTransactionStatus(long openWarn, long openClose, long idleWarn, long idleClose) throws AMQException { - if (inTransaction()) + final long transactionStartTime = _transaction.getTransactionStartTime(); + final long transactionUpdateTime = _txnUpdateTime.get(); + if (isTransactional() && transactionUpdateTime > 0 && transactionStartTime > 0) { long currentTime = System.currentTimeMillis(); - long openTime = currentTime - _transaction.getTransactionStartTime(); - long idleTime = currentTime - _txnUpdateTime.get(); + long openTime = currentTime - transactionStartTime; + long idleTime = currentTime - transactionUpdateTime; _transactionTimeoutHelper.logIfNecessary(idleTime, idleWarn, ChannelMessages.IDLE_TXN(idleTime), TransactionTimeoutHelper.IDLE_TRANSACTION_ALERT); Modified: qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java URL: http://svn.apache.org/viewvc/qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java?rev=1430904&r1=1430903&r2=1430904&view=diff ============================================================================== --- qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java (original) +++ qpid/branches/0.20/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java Wed Jan 9 15:42:10 2013 @@ -50,7 +50,7 @@ public class LocalTransaction implements private volatile Transaction _transaction; private MessageStore _transactionLog; - private long _txnStartTime = 0L; + private volatile long _txnStartTime = 0L; private StoreFuture _asyncTran; public LocalTransaction(MessageStore transactionLog) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org