[
https://issues.apache.org/jira/browse/AMQ-7464?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary Tully updated AMQ-7464:
----------------------------
Description:
An MDB, that directly forwards its message can lead to unmatched acks on
rollback.
{code}
.. onMessage(Message m) {
producer.send(m);
..
}{code}
The root cause is ServerSession.run not doing a message copy before up call to
the listener.
An unmatched delivered ACK cause a broker error and JMS exception "Could not
correlate acknowledgment with dispatched message" that closes the connection
which prevents normal rollback and redelivery processing.
The fix is to copy, in the same way as a regular message consumer, such that
the application is free to do what every it wants to the message.
was:
An MDB, that directly forwards its message can lead to unmatched acks on
rollback.
The root cause is ServerSession.run not doing a message copy before up call to
the listener.
An unmatched delivered ACK cause a broker error and JMS exception "Could not
correlate acknowledgment with dispatched message" that closes the connection
which prevents normal rollback and redelivery processing.
The fix is to copy, in the same way as a regular message consumer, such that
the application is free to do what every it wants to the message.
> ServerSession run does not copy message before dispatch; rollback delivered
> ack messageId can get corrupted by direct forward, leading to "Could not
> correlate acknowledgment with dispatched message" JMSException
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: AMQ-7464
> URL: https://issues.apache.org/jira/browse/AMQ-7464
> Project: ActiveMQ
> Issue Type: Bug
> Components: JCA Container, JMS client
> Affects Versions: 5.15.0
> Reporter: Gary Tully
> Assignee: Gary Tully
> Priority: Major
> Fix For: 5.16.0
>
>
> An MDB, that directly forwards its message can lead to unmatched acks on
> rollback.
> {code}
> .. onMessage(Message m) {
> producer.send(m);
> ..
> }{code}
> The root cause is ServerSession.run not doing a message copy before up call
> to the listener.
> An unmatched delivered ACK cause a broker error and JMS exception "Could not
> correlate acknowledgment with dispatched message" that closes the connection
> which prevents normal rollback and redelivery processing.
> The fix is to copy, in the same way as a regular message consumer, such that
> the application is free to do what every it wants to the message.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)