Leo Provido created ARTEMIS-2252:
------------------------------------
Summary: Some messages are never delivered.
Key: ARTEMIS-2252
URL: https://issues.apache.org/jira/browse/ARTEMIS-2252
Project: ActiveMQ Artemis
Issue Type: Bug
Components: Broker
Affects Versions: 2.6.4
Reporter: Leo Provido
Attachments: Artemis 2.6.4 thread dump.txt
We’ve encountered what we think is a bug in Artemis. The issue arises
establishing two AMQP receiver links to the same Artemis queue (durable), where
each receiver link is established with an AMQP “filter set”, and then messages
are sent to the queue where those messages are assigned to message groups. The
messages are filtered on message type (JMSType). With this setup, we
occasionally find that Artemis permanently holds onto a message (i.e. never
delivers it).
We send 100,000 messages (of the same type – all messages go to the same
receiver link) to the queue, where each message is assigned to one of 10,000
message groups, where each message group contains 10 messages. Furthermore, the
messages are assigned to message groups in the order such that:
• After the first 10,000 messages have been sent, each message group has
been assigned one message
• After the second 10,000 messages have been sent, each message group has
been assigned two messages
• After 90,000 message have been sent, each message group has been
assigned 9 messages.
The client application creating the two receiver links accepts all messages in
a message group when the last message in that message group is received.
We find the client application sometimes receives fewer than 100,000 messages
from Artemis. Around 1 in 3 the application receives 99,999 messages, but
sometimes, even fewer than 99,999 messages. After 2 minutes, we time out the
message group containing the one missing message and reject the 9 messages we
did receive. This then leaves one message in the queue.
This message is never delivered. However, more interestingly, when we then
attempt to close the connection, it takes 60 seconds to close. Furthermore,
after 30 seconds, Artemis logs a thread dump. After another 30 seconds, Artemis
logs a second thread dump, and then the connection is closed. The attached is a
copy of both thread dumps.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)