activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Frank E. Banks (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQ-2089) Transacted Messages Not Committed
Date Thu, 05 Feb 2009 19:26:00 GMT

    [ https://issues.apache.org/activemq/browse/AMQ-2089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=49151#action_49151
] 

Frank E. Banks commented on AMQ-2089:
-------------------------------------

Gary,

I know you already closed this issue, but I wanted to make sure and follow up with my previous
comment just for the record.  The problem I saw was intermittent, but did cause the admin
web interface to crash.  A restart of the master and slave cleared everything up in both our
testing environment and now in production.  To reiterate, you were entirely correct about
the use of class instance variables versus static variables for the connection and session.

Thanks again.

> Transacted Messages Not Committed
> ---------------------------------
>
>                 Key: AMQ-2089
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2089
>             Project: ActiveMQ
>          Issue Type: Test
>          Components: Broker
>    Affects Versions: 5.2.0
>         Environment: linux centOS 64 bit, JRE 1.6.0_11-b03
>            Reporter: Frank E. Banks
>            Assignee: Gary Tully
>             Fix For: 5.2.0
>
>         Attachments: AMQWorkerTest.java, TestCase.java
>
>
> The basic architecture of the consumer is a java daemon that spawns a configurable number
of single threaded consumers that implement MessageListener- each opens its own connection
and transacted session.  In the consumer onMessage() method session.commit() is being called
upon successful processing of the message- and I've verified that it is actually executed.
 The problem is that despite the message being successfully processed and session.commit()
executed the messages remain as pending in the queue.  If the consumer daemon is stopped and
re-started these messages are consumed again (definitely not good).  Note that session.rollback()
was NOT called in this scenario, all the messages were processed successfully.  Also note
that these are persistent messages and we are using the default AMQ message store.
> - The problem *only* occurs when the number of consumer threads is greater than 1. 
> - The problem occurs whether or not a correlation ID is used on the messages.  I wasn't
sure if this mattered or not, but it doesn't.
> Fortunately, as a result of working with this test case I discovered a work around to
the problem, which is to not only call session.commit() on successful message processing but
to then call message.acknowledge() as well.  This works like a charm, but it was my understanding
that calling message.acknowledge() was not necessary when using transacted sessions.

-- 
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