[ 
https://issues.apache.org/jira/browse/QPID-7678?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Rudyy updated QPID-7678:
-----------------------------
    Description: 
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 not acceptable queue should be simply removed 
from the list of routable queues

  was:
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


> [Java Broker, AMQP 1.0] Message enqueuing might not occur when 
> ServerMessage#isResourceAcceptable returns false for any 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 not 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]

Reply via email to