You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2013/07/31 13:23:48 UTC

[jira] [Reopened] (AMQ-3236) In the case of DLQ processing due to an exception from onMessage, provide the exception string as a message property

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

Gary Tully reopened AMQ-3236:
-----------------------------


intermittent hang of: org.apache.activemq.bugs.AMQ2021Test
shows concurrency issue with pending inflights to other topic consumers.
The properties hashmap can get corrupt leading to an infinite loop:
{code}"ActiveMQ Transport: tcp:///127.0.0.1:58927@58921" daemon prio=5 tid=7fd5b79c6800 nid=0x119872000 runnable [119870000]
   java.lang.Thread.State: RUNNABLE
	at java.util.HashMap.putAllForCreate(HashMap.java:437)
	at java.util.HashMap.<init>(HashMap.java:225)
	at org.apache.activemq.command.Message.copy(Message.java:136)
	at org.apache.activemq.command.ActiveMQMessage.copy(ActiveMQMessage.java:68)
	at org.apache.activemq.command.ActiveMQTextMessage.copy(ActiveMQTextMessage.java:57)
	at org.apache.activemq.command.ActiveMQTextMessage.copy(ActiveMQTextMessage.java:52)
	at org.apache.activemq.broker.region.RegionBroker.sendToDeadLetterQueue(RegionBroker.java:714)
	at org.apache.activemq.broker.BrokerFilter.sendToDeadLetterQueue(BrokerFilter.java:313)
	at org.apache.activemq.advisory.AdvisoryBroker.sendToDeadLetterQueue(AdvisoryBroker.java:421)
	at org.apache.activemq.broker.BrokerFilter.sendToDeadLetterQueue(BrokerFilter.java:313)
	at org.apache.activemq.broker.BrokerFilter.sendToDeadLetterQueue(BrokerFilter.java:313)
	at org.apache.activemq.broker.MutableBrokerFilter.sendToDeadLetterQueue(MutableBrokerFilter.java:325)
	at org.apache.activemq.broker.region.PrefetchSubscription.sendToDLQ(PrefetchSubscription.java:510)
	at org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:383)
	- locked <7df495f68> (a java.lang.Object)
	at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:426)
	at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:447)
	at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:82)
	at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:82)
	at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:287)
	at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:92)
	at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:478){code}
                
> In the case of DLQ processing due to an exception from onMessage, provide the exception string as a message property 
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3236
>                 URL: https://issues.apache.org/jira/browse/AMQ-3236
>             Project: ActiveMQ
>          Issue Type: New Feature
>          Components: Broker
>    Affects Versions: 5.4.2
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: DLQ, Exception, Redelivery
>             Fix For: 5.5.0
>
>
> When an application throws an exception from on message, redelivery kicks in through session rollback. If the policy dictates that the message should be sent to the DLQ, the exception cause is lost. 
> The enhancement would pipe the exception with the internal poison ack such that it can be included as a message property in the message in the DLQ.
> Some context in the answer http://stackoverflow.com/questions/5069733/preservation-of-exception-cause-when-redelivering-failed-activemq-jms-messages-pr/5109361#5109361

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