Right, it's https://issues.apache.org/jira/browse/AMQ-6042

> On 14 Nov 2015, at 18:29, Tim Bain <tb...@alumni.duke.edu> wrote:
> 
> Martin,
> 
> Gary's suggestion that you create a unit test to confirm the incorrect
> behavior is a good one.  Also submit a bug in JIRA for this.
> 
> Tim
> On Nov 12, 2015 11:51 AM, "Martin Lichtin" <lich...@yahoo.com.invalid>
> wrote:
> 
>> I believe that branch is for transacted sessions (which I'm also using).
>> If the test would use a transacted session, I'd say it no longer sees the
>> cause.
>> 
>>> On 12.11.2015 13:58, Gary Tully wrote:
>>> 
>>> I don't know, seems that branch does not result in rollback, but maybe it
>>> does eventually and then the cause is missing.
>>> 
>>> A variant of the MessageListenerRedeliveryTest should prove it.
>>> 
>>> 
>>> https://github.com/apache/activemq/blob/d6682e5476cd8cbefca04227ffa26a5d508d2494/activemq-unit-tests/src/test/java/org/apache/activemq/MessageListenerRedeliveryTest.java#L333
>>> 
>>> On Thu, 12 Nov 2015 at 11:23 Martin Lichtin <lich...@yahoo.com> wrote:
>>> 
>>> Trying to understand why dlqDeliveryFailureCause has a 'null' value, it
>>>> seems that in ActiveMQMessageConsumer.dispatch() the code
>>>> 
>>>>                             } catch (RuntimeException e) {
>>>>                                 LOG.error(getConsumerId() + " Exception
>>>> while processing message: " + md.getMessage().getMessageId(), e);
>>>>                                 if (isAutoAcknowledgeBatch() ||
>>>> isAutoAcknowledgeEach() || session.isIndividualAcknowledge()) {
>>>>                                     // schedual redelivery and possible
>>>> dlq processing
>>>>                                     md.setRollbackCause(e);
>>>>                                     rollback();
>>>>                                 } else {
>>>>                                     // Transacted or Client ack: Deliver
>>>> the
>>>>                                     // next message.
>>>>                                     afterMessageIsConsumed(md, false);
>>>>                                 }
>>>>                             }
>>>> 
>>>> should also set md.setRollbackCause(e) in the else clause?
>>>> 
>>>> - Martin
>>>> 
>>>> ------------------------------
>>>> *From:* Martin Lichtin <lich...@yahoo.com>
>>>> *To:* Gary Tully <gary.tu...@gmail.com>; ActiveMQ Users <
>>>> users@activemq.apache.org>
>>>> *Sent:* Wednesday, November 4, 2015 12:32 PM
>>>> 
>>>> 
>>>> *Subject:* Re: What happens with JMSRedelivered when server moves message
>>>> to DLQ
>>>> 
>>>> 
>>>> I'm not actually talking about the counter, but the Boolean flag
>>>> 'JMSRedelivered'.
>>>> Anyways, you're right that it should work when setting
>>>> persistJMSRedelivered=true (I forgot about this option).
>>>> 
>>>> Regarding the "poison cause", is it not possible for the client side to
>>>> return a non-null cause?
>>>> For example, when a message ends up in DLQ, it has additional property:
>>>> 
>>>> dlqDeliveryFailureCause=java.lang.Throwable: Exceeded redelivery policy
>>>> limit:RedeliveryPolicy {destination = null, collisionAvoidanceFactor =
>>>> 0.15, maximumRedeliveries = 0, maximumRedeliveryDelay = -1,
>>>> initialRedeliveryDelay = 1000, useCollisionAvoidance = false,
>>>> useExponentialBackOff = false, backOffMultiplier = 5.0, redeliveryDelay =
>>>> 1000}, cause:null,
>>>> 
>>>> 
>>>> This is nice, but pretty useless information.
>>>> A real value would be if "cause:null" would instead be shwoing the
>>>> Exception that the application threw.
>>>> 
>>>> - Martin
>>>> 
>>>> ________________________________
>>>>> From: Gary Tully <gary.tu...@gmail.com>
>>>>> To: Martin Lichtin <lich...@yahoo.com>; ActiveMQ Users <
>>>>> 
>>>> users@activemq.apache.org>
>>>> 
>>>>> Sent: Wednesday, November 4, 2015 11:52 AM
>>>>> Subject: Re: What happens with JMSRedelivered when server moves message
>>>>> 
>>>> to DLQ
>>>> 
>>>>> 
>>>>> that is intended. the dlq enqueue is a new message. the poison cause
>>>>> 
>>>> property will have some good information but it would make sense to add a
>>>> property that captures the value of that counter. the only issue is that
>>>> the value is typically interpreted client side and remains 1 on the
>>>> broker
>>>> so it may be of limited value. if you want to depend on the redelivery
>>>> counter you may want to peek at the persistjmsredelivery option.
>>>> 
>>>>> 
>>>>> On Tue 3 Nov 2015 3:45 PM Martin Lichtin <lich...@yahoo.com.invalid>
>>>>> 
>>>> wrote:
>>>> 
>>>>> I see the JMSRedelivered flag goes back to 'false' when # of
>>>>> 
>>>> redeliveries is exceeded
>>>> 
>>>>> and ActiveMQ server moving the message into the DLQ.
>>>>> 
>>>>> Is this done on purpose? I'd rather expect the flag stay 'true', as this
>>>>> 
>>>> state should be preserved.
>>>> 
>>>>> - Martin
>>>>> 
>>>> 
>>>> 
>>>> 
>> 

Reply via email to