Alex Rudyy created QPID-7678:
--------------------------------
Summary: [Java Broker, AMQP 1.0] Message enqueuing might not occur
when ServerMessage#isResourceAcceptable returns false for any of the routable
queue
Key: QPID-7678
URL: https://issues.apache.org/jira/browse/QPID-7678
Project: Qpid
Issue Type: Bug
Components: Java Broker
Affects Versions: qpid-java-7.0
Reporter: Alex Rudyy
Priority: Minor
Fix For: qpid-java-7.0
The existing implementation of RoutingResult#send does enqueue the message if
any of the routable queues does not accept the message. For example, that might
happen when message is sent with delivery delay and attribute
Queue#holdOnPublishEnabled is changed from true to false between invocations of
RoutingResult#route and RoutingResult#send.
The problematic code is below:
{code}
public int send(ServerTransaction txn,
final Action<? super MessageInstance> postEnqueueAction)
{
for(BaseQueue q : _queues)
{
if(!_message.isResourceAcceptable(q))
{
return 0;
}
}
...
}
{code}
It seems that message should be attempted to enqueue to other queues (if there
are other routable queues). The acceptable queue should be simply removed from
the list of routable queues
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]