activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stirling Chow (JIRA)" <j...@apache.org>
Subject [jira] Created: (AMQ-1601) maximumRedeliveries not honoured when transacted session is closed without explicit rollback
Date Mon, 25 Feb 2008 22:35:17 GMT
maximumRedeliveries not honoured when transacted session is closed without explicit rollback
--------------------------------------------------------------------------------------------

                 Key: AMQ-1601
                 URL: https://issues.apache.org/activemq/browse/AMQ-1601
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker, JMS client
    Affects Versions: 5.1.0
         Environment: Windows XP SP2, Sun JDK 1.5.0_8
            Reporter: Stirling Chow
         Attachments: ActiveMQTest.zip

1) Unzip attachment into a directory
2) Edit build.xml and change activemq.home to point to your ActiveMQ distribution
3) Run "ant" and observe that one of the 2 JUnit tests fail
4) Refer to test-report for information about the failure

The first JUnit test creates a temporary broker and submits a single message to the queue
"test.queue".  It then creates a transacted message consumer that retrieves the message, prints
out details about it, and then rollsback and closes the session.  Subsequent retries by the
consumer verify that the message is redelivered up to the MAX_REDELIVERIES constant in RedeliveryRollbackTest.java.
 Finally, the test verifies that after MAX_REDELIVERIES, test.queue is empy (i.e., the message
has been recognized as a poison pill).

The second JUnit test performs the same sequence of operations, but instead of explicitly
rolling back the session, it just closes the session.  According to the JavaDoc for javax.jms.session#close():

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/index.html

"Closing a transacted session must roll back the transaction in progress. "

In other words, I was expecting the behaviour to be the same for both test cases.  However,
although the delivery count is updated on the message, it continues to get delivered regardless
of the MAX_REDELIVERIES setting.

ADDITIONAL CONCERN
---------------------------------
Observe the console output of the tests and note how the delivery count increments by two
for the test that works, but only by one for the test that doesn't:

Attempt 1
Received message id=ID:schow-desktop-4347-1203977945999-2:0:1:1:1, redelivered=false, delivery
count=1
Attempt 2
Received message id=ID:schow-desktop-4347-1203977945999-2:0:1:1:1, redelivered=true, delivery
count=3
Attempt 3
Received message id=ID:schow-desktop-4347-1203977945999-2:0:1:1:1, redelivered=true, delivery
count=5
Attempt 4
Received message id=ID:schow-desktop-4347-1203977945999-2:0:1:1:1, redelivered=true, delivery
count=7
Attempt 5
No message available.
Attempt 1
Received message id=ID:schow-desktop-4347-1203977945999-2:1:1:1:1, redelivered=false, delivery
count=1
Attempt 2
Received message id=ID:schow-desktop-4347-1203977945999-2:1:1:1:1, redelivered=true, delivery
count=2
Attempt 3
Received message id=ID:schow-desktop-4347-1203977945999-2:1:1:1:1, redelivered=true, delivery
count=3
Attempt 4
Received message id=ID:schow-desktop-4347-1203977945999-2:1:1:1:1, redelivered=true, delivery
count=4
Attempt 5
Received message id=ID:schow-desktop-4347-1203977945999-2:1:1:1:1, redelivered=true, delivery
count=5

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message