-
Bug
-
Resolution: Done
-
Critical
-
None
-
None
Moving "duplicate" message to DLQ is not working when it was moved from DLQ back to original destination.
Use case is similar to JBPAPP-5800 but after move from DLQ to original destination I try to simulate again failing client and move message to DLQ.
Tested on EAP HQ 5.1.0 Post Relese CR2, message can't make it into DLQ.
Description:
Generate message with _HQ_DUPL_ID
Move message: original destination >>> (1) >>> DLQ >>> (2) >>> original destination >>> (3) >>> DLQ
(1) MDB with context.setRollbackOnly(); in onMessage method
(2) Move message from DLQ back to original queue, use jmx-console
(3) the same MDB like in (1) case
Move (3) fails to deliver message into DLQ, it says Duplicate message detected.
It ends with log warning [1], original destination in jmx-console shows that 1 message is in delivering state. This is again connected to JBPAPP-6080. When JBPAPP-6080 fix is present (CR3 or new nightly build) move (3) would end with exception and message would never make it into DLQ.
There would be cycle: MDB invoked severel times – try to move to the DLQ – fail, message kept in original destination – MDB invoked.
Remember there are 2 ways for (2) how to move message from DLQ (see my comment for JBPAPP-5800). Fix must work for both cases.
Possible cause:
Method moveMessage on DLQ didn't remove message's _HQ_DUPL_ID from cache of present IDs.
[1]
11:05:00,069 WARN [QueueImpl] Message has reached maximum delivery attempts, sending it to Dead Letter Address jms.queue.DLQ from jms.queue.B
11:05:00,070 WARN [PostOfficeImpl] Duplicate message detected - transaction will be rejected