Uploaded image for project: 'JBoss A-MQ'
  1. JBoss A-MQ
  2. ENTMQ-568

FilePendingMessageCursor cannot be cast to org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • JBoss A-MQ 6.1
    • None
    • None
    • None
    • Hide

      1. Install clean 60024 JBoss A-MQ
      2. Install wrapper

      >features:install wrapper
      >wrapper:install
      

      3. Add the broker as a service using standard commands

         $ ln -s /root/dev/fuse/jboss-a-mq-6.0.0.redhat-024/bin/karaf-service /etc/init.d/
          $ chkconfig karaf-service --add
          $ service karaf-service start
      
      

      4. Connect durable producer and subscriber to broker. Verify all is well. I used the standalone examples with:

             <!-- example program defaults -->
              <property name="url" value="tcp://10.10.177.226:61616" />
              <property name="topic" value="true" />
              <property name="subject" value="TEST.TOPIC" />
              <property name="durable" value="true" />
              <property name="max" value="1000" />
              <property name="parallelThreads" value="2" />
              <property name="messageSize" value="128" />
              <property name="clientId" value="consumer1c" />
              <property name="producerClientId" value="consumer1c" />
              <property name="timeToLive" value="0" />
              <property name="sleepTime" value="0" />
              <property name="transacted" value="false" />
              <property name="reply-subject" value="" />
              <property name="verbose" value="true"/>
              <property name="ack-mode" value="AUTO_ACKNOWLEDGE"/>
              <property name="receive-time-out" value="0"/>
              <property name="subscribers" value="1"/>
              <property name="batch" value="1000"/>
              <property name="user" value="admin"/>
              <property name="password" value="admin"/>
      

      5. Install 6.0R1 and repeat step 4. As soon as attach subscriber get the above exception.

      Show
      1. Install clean 60024 JBoss A-MQ 2. Install wrapper >features:install wrapper >wrapper:install 3. Add the broker as a service using standard commands $ ln -s /root/dev/fuse/jboss-a-mq-6.0.0.redhat-024/bin/karaf-service /etc/init.d/ $ chkconfig karaf-service --add $ service karaf-service start 4. Connect durable producer and subscriber to broker. Verify all is well. I used the standalone examples with: <!-- example program defaults --> <property name= "url" value= "tcp: //10.10.177.226:61616" /> <property name= "topic" value= " true " /> <property name= "subject" value= "TEST.TOPIC" /> <property name= "durable" value= " true " /> <property name= "max" value= "1000" /> <property name= "parallelThreads" value= "2" /> <property name= "messageSize" value= "128" /> <property name= "clientId" value= "consumer1c" /> <property name= "producerClientId" value= "consumer1c" /> <property name= "timeToLive" value= "0" /> <property name= "sleepTime" value= "0" /> <property name= "transacted" value= " false " /> <property name= "reply-subject" value="" /> <property name= "verbose" value= " true " /> <property name= "ack-mode" value= "AUTO_ACKNOWLEDGE" /> <property name= "receive-time-out" value= "0" /> <property name= "subscribers" value= "1" /> <property name= "batch" value= "1000" /> <property name= "user" value= "admin" /> <property name= "password" value= "admin" /> 5. Install 6.0R1 and repeat step 4. As soon as attach subscriber get the above exception.

    Description

      After upgrading to JBoss A-MQ 6.0R1, getting the following exception when we connect a durable subscriber to the broker:| [java] javax.jms.JMSException: org.apache.activemq.broker.region.cursors.FilePendingMessageCursor cannot be cast to org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor|

      [java] at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
      [java] at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1391)
      [java] at org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1925)
      [java] at org.apache.activemq.ActiveMQMessageConsumer.<init>(ActiveMQMessageConsumer.java:273)
      [java] at org.apache.activemq.ActiveMQTopicSubscriber.<init>(ActiveMQTopicSubscriber.java:117)
      [java] at org.apache.activemq.ActiveMQSession.createDurableSubscriber(ActiveMQSession.java:1326)
      [java] at org.apache.activemq.ActiveMQSession.createDurableSubscriber(ActiveMQSession.java:1262)
      [java] at ConsumerTool.run(Unknown Source)
      [java] Caused by: java.lang.ClassCastException: org.apache.activemq.broker.region.cursors.FilePendingMessageCursor cannot be cast to org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor
      [java] at org.apache.activemq.broker.region.DurableTopicSubscription.activate(DurableTopicSubscription.java:165)
      [java] at org.apache.activemq.broker.region.TopicRegion.addConsumer(TopicRegion.java:158)
      [java] at org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:391)
      [java] at org.apache.activemq.broker.jmx.ManagedRegionBroker.addConsumer(ManagedRegionBroker.java:230)
      [java] at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:97)
      [java] at org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:76)
      [java] at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:97)
      [java] at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:97)
      [java] at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:97)
      [java] at org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:102)
      [java] at org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:624)
      [java] at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:332)
      [java] at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:329)
      [java] at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:184)
      [java] at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
      [java] at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
      [java] at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:288)
      [java] at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
      [java] at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
      [java] at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
      [java] at java.lang.Thread.run(Thread.java:722)
      [java] All threads completed their work
       

      The broker is configured with the following destination policy:| <destinationPolicy>|

      <policyMap>
      <policyEntries>
      <policyEntry topic=">" producerFlowControl="true" memoryLimit="2mb">
      <pendingSubscriberPolicy>
      <vmCursor />
      </pendingSubscriberPolicy>
      <pendingDurableSubscriberPolicy>
      <fileDurableSubscriberCursor />
      </pendingDurableSubscriberPolicy>
      </policyEntry>
      <policyEntry queue=">" producerFlowControl="true" memoryLimit="2mb">
      <pendingQueuePolicy>
      <vmQueueCursor />
      </pendingQueuePolicy>
      </policyEntry>
      </policyEntries>
      </policyMap>
      </destinationPolicy>

      Attachments

        Activity

          People

            gtully@redhat.com Gary Tully
            davestanley Dave Stanley (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: