queue.send() throws ResourceAllocationException without checking usageManager 
when sendFailIfNoSpace is set
-----------------------------------------------------------------------------------------------------------

                 Key: AMQ-1789
                 URL: https://issues.apache.org/activemq/browse/AMQ-1789
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 4.1.2
            Reporter: Mario Lukica


org.apache.activemq.broker.region.Queue send(ConnectionContext, Message) method 
always throws ResourceAllocationException if sendFailIfNoSpace is set, 
producerFlowControl is enabled, message response is not required and network 
connection is not used to connect to broker. 

In this case thread execution ends up in following code block: 
{code}
            ... 
            } else { 
                if (usageManager.isSendFailIfNoSpace() ) { 
                    throw new javax.jms.ResourceAllocationException("Usage 
Manager memory limit reached"); 
                } else { 
                    while( !usageManager.waitForSpace(1000) ) { 
                        if( context.getStopping().get() ) 
                            throw new IOException("Connection closed, send 
aborted."); 
                    } 
                } 
            } 
{code}

... usageManager is never checked for space prior to throwing 
ResourceAllocationException("Usage Manager memory limit reached"), and no 
message can be sent to this queue, regardless of the usageManager set on queue.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to