You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Alex Rudyy (JIRA)" <ji...@apache.org> on 2017/02/21 14:42:44 UTC

[jira] [Created] (QPID-7678) [Java Broker, AMQP 1.0] Message enqueuing might not occur when ServerMessage#isResourceAcceptable returns false for any of the routable queue

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: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org