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

Gary Tully reopened AMQ-4656:
-----------------------------

      Assignee: Gary Tully  (was: Dejan Bosanac)
    Regression: Regression

there is an issue with the cast introduced in the fix for this 
issue.{code}javax.jms.JMSException: 
org.apache.activemq.broker.region.cursors.FilePendingMessageCursor cannot be 
cast to org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor
        at 
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
        at 
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1408)
        at 
org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1983)
        at 
org.apache.activemq.ActiveMQMessageConsumer.<init>(ActiveMQMessageConsumer.java:275)
        at 
org.apache.activemq.ActiveMQTopicSubscriber.<init>(ActiveMQTopicSubscriber.java:117)
        at 
org.apache.activemq.ActiveMQSession.createDurableSubscriber(ActiveMQSession.java:1384)
        at 
org.apache.activemq.ActiveMQSession.createDurableSubscriber(ActiveMQSession.java:1320)
        at 
org.apache.activemq.bugs.AMQ4656Test.testDurableConsumerEnqueueCountWithZeroPrefetch(AMQ4656Test.java:102)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.junit.runners.Suite.runChild(Suite.java:127)
        at org.junit.runners.Suite.runChild(Suite.java:26)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
        at 
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77)
        at 
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
        at 
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.ClassCastException: 
org.apache.activemq.broker.region.cursors.FilePendingMessageCursor cannot be 
cast to org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor
        at 
org.apache.activemq.broker.region.DurableTopicSubscription.activate(DurableTopicSubscription.java:164)
        at 
org.apache.activemq.broker.region.TopicRegion.addConsumer(TopicRegion.java:159)
        at 
org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:400)
        at 
org.apache.activemq.broker.jmx.ManagedRegionBroker.addConsumer(ManagedRegionBroker.java:244)
        at 
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:97)
        at 
org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:101)
        at 
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:97)
        at 
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:97)
        at 
org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:102)
        at 
org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:618)
        at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:349)
        at 
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294)
        at 
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:148)
        at 
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
        at 
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
        at 
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
        at 
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83){code}
 will add a trivial fix and test because this is a regression. It is not clear 
when the file pending message cursor is advisable, but if folks have a good 
reason we don't want to break their existing config. 

> Pending Queue Counter is incorrect when using durable topics
> ------------------------------------------------------------
>
>                 Key: AMQ-4656
>                 URL: https://issues.apache.org/jira/browse/AMQ-4656
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.8.0
>            Reporter: Timothy Bish
>            Assignee: Gary Tully
>             Fix For: 5.9.0
>
>         Attachments: AMQ4656Test.java
>
>
> When using a durable topics the Pending Queue Counter provides an incorrect 
> value for pending messages.
> Steps to recreate
> Set up the durable subscriber
> {noformat}
> ant consumer -Durl=tcp://localhost:61616 -Dtopic=true -Dsubject=MYSUB 
> -Ddurable=true -Dmax=2
> {noformat}
> Stop the subscriber
> Send 20 persistent messages
> {noformat}
> ant producer -Ddurable=true -Durl=tcp://localhost:61616 -Dtopic=true 
> -Dsubject=MYSUB -Dmax=20
> {noformat}
> Consume 2 messages
> {noformat}
> ant consumer -Durl=tcp://localhost:61616 -Dtopic=true -Dsubject=MYSUB 
> -Ddurable=true -Dmax=2
> {noformat}
> View the counter stats.
> The result is the following:
> {noformat}
> Pending Queue Size = 38
> Dispatched Queue Size = 0
> Dispatched Counter = 20
> Enqueue Counter = 20
> Dequeue Counter = 2
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to