You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Gert Vanthienen <ge...@gmail.com> on 2009/05/11 11:57:31 UTC

Re: ActiveMQ warning - Local transaction had not been commited. Commiting now

Antony,

The message seems to indicate that an transaction was in progress but
uncommitted.  Could you verify that you actually commit the
transactions you start?  Also, make sure that the entire MEP is
handled before committing the transaction (e.g. by using sendSync or
by explicitly sending a DONE exchange yourself) -- have a look at the
code samples on http://servicemix.apache.org/transactions.html.

Are you coding this yourself or are you using something like Spring's
TransactionTemplate to ease the work a bit?  If you have already
checked that, could you post us a sample of the code you are using as
that might help us solve your issue?

For most use cases, I would recommend you to avoid the use of the JCA
Flow -- most of the times, it's much more convenient to use a matching
consumer-provider pair of JMS endpoints.  This will allow you to
control transaction boundaries in a more fine-grained way and it will
also avoid needless serialization of every MessageExchange while
giving you the same level of reliability.

Regards,

Gert Vanthienen
------------------------
Open Source SOA: http://fusesource.com
Blog: http://gertvanthienen.blogspot.com/



2009/5/6 Antony Paul <an...@gmail.com>:
>
> Hi,
>    I am trying to set up JTA XA transactions in ServiceMix so application
> will have JBI message exchange recovery. Everything seems to work fine.
> Messages are recovered on server restart. The only problem is the warning
> messages from ActiveMQ. What does this mean? How to fix it.
>
> ServerSessionImpl:3      | .activemq.ra.ServerSessionImpl  234 | Local
> transaction had not been commited. Commiting now.
> --------
> --------
> ServerSessionImpl:3      | .activemq.ra.ServerSessionImpl  177 | Endpoint
> failed to process message. Reason: Endpoint after delivery notification
> failure
>
> Some more detail :
> I wrote a sample application with two components both extends
> ComponentSupport and implements MessageExchangeListener. In the first
> component I wrote a Timer that will send only one message to the next
> component. The sending is done inside a transaction. The second component
> after processing commits the transaction. On committing I am getting the
> above messages. Nothing other than sending message is done. ie. no other
> resource is in the transaction.
>
>    It is deployed into the default servicemix container. Using all the
> default config files.
> The container element is modified to add persistent="true"
> autoEnlistInTransaction="true" flowName="jca".
>
>    Using Fuse ESB 3.4 with AMQ 5.2.0.
>
> Regards,
> Antony
> --
> View this message in context: http://www.nabble.com/ActiveMQ-warning---Local-transaction-had-not-been-commited.-Commiting-now-tp23403767p23403767.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>

Re: ActiveMQ warning - Local transaction had not been commited. Commiting now

Posted by Antony Paul <an...@gmail.com>.
If I use JMS end points will the exchanges inside ServiceMix can be recovered
on a crash?. I am using a cluster with HA. Also can you point me to some
docs on using JMS endpoints. I have some business logic to handle the
messages. The samples code is just passing message from one component to
another. While the message is passed it may get lost on a system failure.
That is why I opt for XA.

Don't know what is the use of DONE exchange. When I use the done(exchange)
method, the producer component is invoked multiple times.

The code is attached. It is using a SU. The container configuration is also
included.  http://www.nabble.com/file/p23540566/code.zip code.zip 

Regards,
Antony.


Gert Vanthienen wrote:
> 
> Antony,
> 
> The message seems to indicate that an transaction was in progress but
> uncommitted.  Could you verify that you actually commit the
> transactions you start?  Also, make sure that the entire MEP is
> handled before committing the transaction (e.g. by using sendSync or
> by explicitly sending a DONE exchange yourself) -- have a look at the
> code samples on http://servicemix.apache.org/transactions.html.
> 
> Are you coding this yourself or are you using something like Spring's
> TransactionTemplate to ease the work a bit?  If you have already
> checked that, could you post us a sample of the code you are using as
> that might help us solve your issue?
> 
> For most use cases, I would recommend you to avoid the use of the JCA
> Flow -- most of the times, it's much more convenient to use a matching
> consumer-provider pair of JMS endpoints.  This will allow you to
> control transaction boundaries in a more fine-grained way and it will
> also avoid needless serialization of every MessageExchange while
> giving you the same level of reliability.
> 
> Regards,
> 
> Gert Vanthienen
> ------------------------
> Open Source SOA: http://fusesource.com
> Blog: http://gertvanthienen.blogspot.com/
> 
> 
> 
> 2009/5/6 Antony Paul <an...@gmail.com>:
>>
>> Hi,
>>    I am trying to set up JTA XA transactions in ServiceMix so application
>> will have JBI message exchange recovery. Everything seems to work fine.
>> Messages are recovered on server restart. The only problem is the warning
>> messages from ActiveMQ. What does this mean? How to fix it.
>>
>> ServerSessionImpl:3      | .activemq.ra.ServerSessionImpl  234 | Local
>> transaction had not been commited. Commiting now.
>> --------
>> --------
>> ServerSessionImpl:3      | .activemq.ra.ServerSessionImpl  177 | Endpoint
>> failed to process message. Reason: Endpoint after delivery notification
>> failure
>>
>> Some more detail :
>> I wrote a sample application with two components both extends
>> ComponentSupport and implements MessageExchangeListener. In the first
>> component I wrote a Timer that will send only one message to the next
>> component. The sending is done inside a transaction. The second component
>> after processing commits the transaction. On committing I am getting the
>> above messages. Nothing other than sending message is done. ie. no other
>> resource is in the transaction.
>>
>>    It is deployed into the default servicemix container. Using all the
>> default config files.
>> The container element is modified to add persistent="true"
>> autoEnlistInTransaction="true" flowName="jca".
>>
>>    Using Fuse ESB 3.4 with AMQ 5.2.0.
>>
>> Regards,
>> Antony
>> --
>> View this message in context:
>> http://www.nabble.com/ActiveMQ-warning---Local-transaction-had-not-been-commited.-Commiting-now-tp23403767p23403767.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -----
> ---
> Gert Vanthienen
> http://gertvanthienen.blogspot.com
> 

-- 
View this message in context: http://www.nabble.com/ActiveMQ-warning---Local-transaction-had-not-been-commited.-Commiting-now-tp23403767p23540566.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.