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