The 'dispatcher thread' is the session thread used to deliver messages
from receiver onMessage callbacks, 1 thread per session as mandated by
JMS. When a session is delivering to onMessage, that blocks certain
other operations on the session/connection from completing since a
delivery is in progress, as mandated by JMS. This is accomplished with
a lock.

You are essentially blocking these delivery threads upon both
additional locks in your application and to extent upon each other, in
a circle'ish sequence, by having dispatcher thread acquire a lock
inside your application, then performing operations with the thread
upon different connection/session that require that other sessions
delivery lock, which you can't get because the other session is also
trying to do a similar thing at the same time, but is unable to get
the lock in your application as the first session has it, resulting in
each waiting on the other to finish, which they then obviously can't.
That is not an issue in JmsSession but in your general use of the
client.

As I have said a couple of times, we did identify one thing in 0.45.0
back in May where the session thread would continue to hold this
delivery lock while the thread was firing the connection exception
listener during certain types of delivery failure. We improved that so
it stopped holding the lock here in early June. Thus upgrading your
client would resolve the specific issue you reported in May. That may
or may not be the very same issue you are reporting now since you are
still using the older client, or it may actually be two onMessage
calls performing the similar thread dance, which there is nothing the
client can do about.

Separately, we identified an issue in proton-j, which can lead to the
very style of delivery failure from your original report (though you
also identified your particular usage of Service Bus tooling resulted
in that behaviour, so it may also be unrelated). The proton-j 0.33.8
release fixing that is now available, and we will do a Qpid JMS 0.55.0
release using it soon (though you can manually update to use 0.33.8
with the existing 0.54.0 release already if so desired).

Robbie

On Tue, 17 Nov 2020 at 16:41, akabhishek1
<mailbox.abhishek.ku...@gmail.com> wrote:
>
> Hey Robbie,
>
> Thanks a lot for quick reply.
>
> We are using JmsSession for below purposes
> 1. Creating JMS messages
> 2. Creating producers for sending message
> 3. Creating consumers for receiving message
>
> Thread name "delivery dispatcher" suggests that there is an issue in
> consumer JmsSession. Could you please confirm this ?
>
> If you think there could be an issue in other processor like JmsMessage
> creation or publishing then please let me know. So I can try to find
> blocking thread.
>
> Regards,
> Abhishek Kumar
>
>
>
>
> --
> Sent from: http://qpid.2158936.n2.nabble.com/Apache-Qpid-users-f2158936.html
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> For additional commands, e-mail: users-h...@qpid.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
For additional commands, e-mail: users-h...@qpid.apache.org

Reply via email to