[ 
https://issues.apache.org/jira/browse/QPID-4503?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Keith Wall reopened QPID-4503:
------------------------------

      Assignee: Keith Wall  (was: Robbie Gemmell)

There is a second race condition in the transaction timeout feature that can 
cause a spurious idle warning (or spurious idle closes).

It is a race between the housekeeper and a newly begun transaction and causes 
the last activity time of the previous transaction to be used rather than the 
current one.  It produces a spurious alert with an apparently genuine 
millisecond value e.g.

CHN-1008 : Idle Transaction : 5,007 ms
(for the case where the previous transaction was active approximately 5 seconds 
ago)

The issue is when a transaction commits (or rolls-back), the 
transactionUpdateTime is not reset to zero.  This means that as the next 
transaction begins (whichsets the transactionStartTime *then* updates the 
transactionUpdateTime), there exists a window of time where the 
transactionStartTime refers to the new transaction while the 
transactionUpdateTime exists to the previous transaction.  If the housekeeper 
happens to run in the intervening moment, a spurious message will result.

{noformat}
                                       + Housekeeper observes txn2 startTime 
and txn1 updateTime!!!
                                       |
                                       |
10                                15   |
|                                 |    v
-----------------------------------------------------------> time
^          ^                         ^             ^
txn1 send  txn1 commit               txn2 send     txn2 commit
^  ^       ^                         ^   ^
|  |       |                         |   |
|  |       |                         |   txUpdateTime set
|  |       |                         |
|  |       |                         txStartTime set
|  |       txStartTime clear
|  txUpdateTime set
txStartTime set
{noformat}
                
> Producer transaction timeout detection feature may produce spurious open/idle 
> alerts and close client connections/sessions without good cause
> ---------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-4503
>                 URL: https://issues.apache.org/jira/browse/QPID-4503
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: 0.12, 0.14, 0.16, 0.18, 0.20
>            Reporter: Keith Wall
>            Assignee: Keith Wall
>             Fix For: 0.21
>
>         Attachments: QPID-4503_repro.tar.bz2
>
>
> There is a race condition in AMQChannel#checkTransactionStatus (and 
> ServerSession#checkTransactionStatus) which can lead to spurious open/idle 
> alerts and needlessly closed client connections (0-8..0-9-1) or client 
> sessions (0-10).
> When the defect manifests, the alert generated incorrectly identifies the 
> transaction as being open since Jan 1, 1970. eg. 1,355,281,641,112 ms
> e.g.
> {noformat}
> [con:11(guest@/127.0.0.1:47276/test)/ch:2] CHN-1007 : Open Transaction : 
> 1,355,281,641,112 ms
> {noformat}
> This defect affects only users who have configured the transaction timeout 
> feature (as described 
> http://qpid.apache.org/books/trunk/AMQP-Messaging-Broker-Java-Book/html/Java-Broker-Runtime-Producer-Transaction-Timeout.html).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to