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

Aidan Skinner updated QPID-1093:
--------------------------------

    Fix Version/s: M3

> [Java Broker] Meta data not found when registering a consumer using a 
> selectors
> -------------------------------------------------------------------------------
>
>                 Key: QPID-1093
>                 URL: https://issues.apache.org/jira/browse/QPID-1093
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: M2.1
>            Reporter: Rob Godfrey
>             Fix For: M3
>
>
> When registering a new consumer against a queue with a large number of 
> persistent messages the following stack trace was seen on the console:
> at 
> org.apache.qpid.server.queue.WeakReferenceMessageHandle.loadMessageMetaData(WeakReferenceMessageHandle.java:73)
>  
> at 
> org.apache.qpid.server.queue.WeakReferenceMessageHandle.getContentHeaderBody(WeakReferenceMessageHandle.java:64)
>  
> at 
> org.apache.qpid.server.queue.AMQMessage.getContentHeaderBody(AMQMessage.java:353)
>  
> at 
> org.apache.qpid.server.filter.PropertyExpression.evaluate(PropertyExpression.java:273)
>  
> at 
> org.apache.qpid.server.filter.ArithmeticExpression.evaluate(ArithmeticExpression.java:253)
>  
> at 
> org.apache.qpid.server.filter.ComparisonExpression$1.evaluate(ComparisonExpression.java:245)
>  
> at 
> org.apache.qpid.server.filter.LogicExpression$2.evaluate(LogicExpression.java:67)
>  
> at 
> org.apache.qpid.server.filter.LogicExpression$2.evaluate(LogicExpression.java:67)
>  
> at 
> org.apache.qpid.server.filter.LogicExpression.matches(LogicExpression.java:105)
>  
> at 
> org.apache.qpid.server.filter.JMSSelectorFilter.matches(JMSSelectorFilter.java:52)
>  
> at 
> org.apache.qpid.server.filter.SimpleFilterManager.allAllow(SimpleFilterManager.java:57)
>  
> at 
> org.apache.qpid.server.queue.SubscriptionImpl.checkFilters(SubscriptionImpl.java:441)
>  
> at 
> org.apache.qpid.server.queue.SubscriptionImpl.hasInterest(SubscriptionImpl.java:428)
>  
> at 
> org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager.populatePreDeliveryQueue(ConcurrentSelectorDeliveryManager.java:332)
>  
> at 
> org.apache.qpid.server.queue.AMQQueue.registerProtocolSession(AMQQueue.java:694)
>  
> at org.apache.qpid.server.AMQChannel.subscribeToQueue(AMQChannel.java:341) 
> at 
> org.apache.qpid.server.handler.BasicConsumeMethodHandler.methodReceived(BasicConsumeMethodHandler.java:114)
>  
> This is due to the fact that the selectors are evaluating the message after 
> it has already been acecpted by another subscribe, sent to a client and 
> dequeued.
> before evaluating the message against the selector we should first check that 
> it is still referenced; and then take a temporary reference while the 
> evaluation takes place.

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