You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by jberney <jo...@jpmchase.com> on 2006/05/04 15:51:37 UTC

QueueBrowsing with MasterSlave Problem

All,
     I am attempting to browse queues while using master slave. Every time I
attempt to browse a queue a null pointer exception is thrown by the master
broker (it is visible in stdout from Master Broker) and the getEnumeration()
call never returns. If I do not start the slave broker, this exact code
works perfectly. It does not matter if messages have or have not been added
to the queue.

I am currently using 4.0 final release candidate, but I see the exact same
problem (with slightly different line numbers in the exception) using 4.0
RC2. Also, I have retroactive consumer set in the connection factory.

Master Broker Exception:
Exception in thread "ActiveMQ Task" java.lang.NullPointerException
        at
org.apache.activemq.broker.ft.MasterBroker.processDispatch(MasterBroker.java:288)
        at
org.apache.activemq.broker.MutableBrokerFilter.processDispatch(MutableBrokerFilter.java:194)
        at
org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:580)
        at
org.apache.activemq.broker.AbstractConnection.iterate(AbstractConnection.java:598)
        at
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:110)
        at
org.apache.activemq.thread.PooledTaskRunner.access$100(PooledTaskRunner.java:25)
        at
org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)

Code to create browse:
 this.browser = this.connection.createSession(false,
javax.jms.Session.AUTO_ACKNOWLEDGE).createBrowser((Queue) queue);
this.browser.getEnumeration();

Connect string:
failover://(tcp://<masterhostname>:61635,tcp://<slavehostname>:61635)?randomize=false

Master config:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:amq="http://activemq.org/config/1.0">

        <amq:broker name="broker" persistent="false" useJmx="true"
useShutdownHook="true" deleteAllMessagesOnStartup="true">
                <amq:transportConnectors>
                        <amq:transportConnector uri="tcp://0.0.0.0:61635" />
                </amq:transportConnectors>

     <amq:memoryManager>
                <amq:usageManager limit="1000000000" /> <!-- size in bytes
-->
        </amq:memoryManager>

     </amq:broker>

</beans>

Slave config:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:amq="http://activemq.org/config/1.0">
        <amq:broker name="slave"
masterConnectorURI="tcp://<masterhostname>:61635"
shutdownOnMasterFailure="false" persistent="false" useJmx="true"
useShutdownHook="true" deleteAllMessagesOnStartup="true">
              <amq:transportConnectors>
                        <amq:transportConnector uri="tcp://0.0.0.0:61635" />
                </amq:transportConnectors>
  <amq:memoryManager>
                <amq:usageManager limit="1000000000" /> <!-- size in bytes
-->
        </amq:memoryManager>
</amq:broker>

</beans>

--
View this message in context: http://www.nabble.com/QueueBrowsing-with-MasterSlave-Problem-t1557136.html#a4229516
Sent from the ActiveMQ - User forum at Nabble.com.


Re: QueueBrowsing with MasterSlave Problem

Posted by jberney <jo...@jpmchase.com>.
Thank you very much for the fix. It solves the lockup issue, however I now
receive exceptions on the slave broker of the form when browsing a queue:

ERROR ManagedRegionBroker            - Failed to register subscription
QueueBrowserSubscription:
consumer=ID:<masterhostname>-35805-1146854230285-1:2:1:1, destinations=0,
dispatched=0, delivered=0, pending=0
javax.management.InstanceAlreadyExistsException:
org.apache.activemq:BrokerName=localhost,Type=Subscription,active=true,name=ID_<masterhostname>-35805-1146854230285-1_2_1_1
        at
com.sun.jmx.mbeanserver.RepositorySupport.addMBean(RepositorySupport.java:452)
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1410)
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:936)
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:337)
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:497)
        at
org.apache.activemq.broker.jmx.ManagedRegionBroker.registerSubscription(ManagedRegionBroker.java:260)
        at
org.apache.activemq.broker.jmx.ManagedRegionBroker.registerSubscription(ManagedRegionBroker.java:180)
        at
org.apache.activemq.broker.jmx.ManagedQueueRegion.createSubscription(ManagedQueueRegion.java:45)
        at
org.apache.activemq.broker.region.AbstractRegion.addConsumer(AbstractRegion.java:145)
        at
org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:293)
        at
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:73)
        at
org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:77)
        at
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:73)
        at
org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:86)
        at
org.apache.activemq.broker.AbstractConnection.processAddConsumer(AbstractConnection.java:428)
        at
org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:295)
        at
org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:202)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:62)
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:97)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
        at
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:76)
        at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44)
        at
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
        at
org.apache.activemq.broker.ft.MasterConnector.serviceRemoteCommand(MasterConnector.java:204)
        at
org.apache.activemq.broker.ft.MasterConnector$2.onCommand(MasterConnector.java:99)
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:97)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:114)
        at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:87)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:143)
        at java.lang.Thread.run(Thread.java:595)
INFO  Service                        - Async error occurred:
java.lang.NullPointerException
java.lang.NullPointerException


Thanks in advance
--
View this message in context: http://www.nabble.com/QueueBrowsing-with-MasterSlave-Problem-t1557136.html#a4252757
Sent from the ActiveMQ - User forum at Nabble.com.


Re: QueueBrowsing with MasterSlave Problem

Posted by Hiram Chirino <hi...@hiramchirino.com>.
I just committed a fix for this.  The next snapshot should have this
issue resolved.

On 5/4/06, jberney <jo...@jpmchase.com> wrote:
>
> All,
>      I am attempting to browse queues while using master slave. Every time I
> attempt to browse a queue a null pointer exception is thrown by the master
> broker (it is visible in stdout from Master Broker) and the getEnumeration()
> call never returns. If I do not start the slave broker, this exact code
> works perfectly. It does not matter if messages have or have not been added
> to the queue.
>
> I am currently using 4.0 final release candidate, but I see the exact same
> problem (with slightly different line numbers in the exception) using 4.0
> RC2. Also, I have retroactive consumer set in the connection factory.
>
> Master Broker Exception:
> Exception in thread "ActiveMQ Task" java.lang.NullPointerException
>         at
> org.apache.activemq.broker.ft.MasterBroker.processDispatch(MasterBroker.java:288)
>         at
> org.apache.activemq.broker.MutableBrokerFilter.processDispatch(MutableBrokerFilter.java:194)
>         at
> org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:580)
>         at
> org.apache.activemq.broker.AbstractConnection.iterate(AbstractConnection.java:598)
>         at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:110)
>         at
> org.apache.activemq.thread.PooledTaskRunner.access$100(PooledTaskRunner.java:25)
>         at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
>
> Code to create browse:
>  this.browser = this.connection.createSession(false,
> javax.jms.Session.AUTO_ACKNOWLEDGE).createBrowser((Queue) queue);
> this.browser.getEnumeration();
>
> Connect string:
> failover://(tcp://<masterhostname>:61635,tcp://<slavehostname>:61635)?randomize=false
>
> Master config:
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns:amq="http://activemq.org/config/1.0">
>
>         <amq:broker name="broker" persistent="false" useJmx="true"
> useShutdownHook="true" deleteAllMessagesOnStartup="true">
>                 <amq:transportConnectors>
>                         <amq:transportConnector uri="tcp://0.0.0.0:61635" />
>                 </amq:transportConnectors>
>
>      <amq:memoryManager>
>                 <amq:usageManager limit="1000000000" /> <!-- size in bytes
> -->
>         </amq:memoryManager>
>
>      </amq:broker>
>
> </beans>
>
> Slave config:
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns:amq="http://activemq.org/config/1.0">
>         <amq:broker name="slave"
> masterConnectorURI="tcp://<masterhostname>:61635"
> shutdownOnMasterFailure="false" persistent="false" useJmx="true"
> useShutdownHook="true" deleteAllMessagesOnStartup="true">
>               <amq:transportConnectors>
>                         <amq:transportConnector uri="tcp://0.0.0.0:61635" />
>                 </amq:transportConnectors>
>   <amq:memoryManager>
>                 <amq:usageManager limit="1000000000" /> <!-- size in bytes
> -->
>         </amq:memoryManager>
> </amq:broker>
>
> </beans>
>
> --
> View this message in context: http://www.nabble.com/QueueBrowsing-with-MasterSlave-Problem-t1557136.html#a4229516
> Sent from the ActiveMQ - User forum at Nabble.com.
>
>


--
Regards,
Hiram