As a result of QE's testing, most notably BZ-733383, it was identified that the QpidMessageHandler was incorrectly calling message.acknowlege() after the call to messageEndpoint.onMessage(). This was causing incorrect transactional semantics on the broker as we need to call acknowledge() before the call to onMessage() to line up with the commit/recover calls later in the code.
This is only applicable to endpoints where delivery needs to run in the context of an XA transaction. Non transactional endpoints, or endpoints using LocalTransactions, the call is done after the call to onMessage().
Is this a new issue or the diagnosis for Bug 733383 ?
It looks like Bug 733383 should be dependent on this one.
Reopening as call for acknowledge is still incorrect. I am attaching a patch. Also sent to Andrew Stitcher for integration. Also, I am attaching email conversation with Gordon and Rajith about the underlying issue in the Java client which we are still looking at.
Created attachment 523710 [details]
Patch to correctly call message.acknowledge() after endpoint.beforeDelivery()
This has been fixed in package qpid-java-jca-0.10-10
I can confirm that the code is really fixed (decompiled the adapter). I do not have any test that could be executed.