activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From alvinj <aa...@pubpress.com>
Subject Re: Pure Master Slave not working
Date Thu, 14 Feb 2008 22:49:44 GMT

Thanks. I think I'm a bit of an idiot for one thing I did, but I still have a
problem.

A quick summary is that I changed the failover URL, but it didn't help. (Per
a page on the site I tried it with two slashes ("failover://(...") and no
slashes ("failover:(..."), but neither worked.) Then as I was testing the
system, I killed the Master, and the Slave came up with this info:

WARN  MasterConnector    - The Master has shutdown
WARN  BrokerService         - Master Failed - starting all connectors
ERROR BrokerService         - Failed to startAllConnectors
INFO  TransportConnector  - Connector vm://localhost Stopped

At first I thought this was bad, but now that the Master is down, it turns
out that I can query the Slave like this:

   browse --amqurl tcp://localhost:61616 TEST.FOO

and it is now showing that my messages are indeed now queued on the Slave,
so the backup really is working.

What I think I did on the Slave earlier was I tried this browse command, and
it just hung up, so I killed it with Control-C. Somehow I turned this into
"I don't have any messages in the Slave queue." But, putting that with what
you wrote, I think I can't query the Slave while the Master is running,
which makes sense.

So I think my only real problem is that the Master is is throwing these
scary-looking exceptions which imply that the Slave is not working:

ERROR MasterBroker - Slave Failed
java.lang.AssertionError: Unsupported Method
        at
org.apache.activemq.transport.TransportSupport.request(TransportSupport.java:71)
        (more here ...)

But, since the Slave really does seem to be backing up the Master, my new
questions are "What do these exceptions really mean?", and "How can I fix
the problem?"



ttmdev wrote:
> 
> You want your client to first attempt to connect to the master
> (macserver). So turn off randomization like this and see if your results
> are any different.  
> 
> failover:(tcp://macserver:61616,tcp://localhost:61616)?randomize=false&initialReconnectDelay=100
> 
> The documentation on the web site states the following, "Whilst a Slave is
> actively connected to the Master - it does not allow or start any network
> or transport connectors, it's sole purpose is to duplicate the state of
> the master." So if your client has randomization turned on (default) and
> it just so happens to try and connect to the slave first, that connect
> attempt should fail and it will then try the master. However, I am seeing
> different in my tests. The client - producer in my case - successfully
> connects to the slave. 
> 
> Joe
> www.ttmsolutions.com
> 
> 
> 
> 
> 
> 
> alvinj wrote:
>> 
>> I'm trying to create a Pure Master Slave configuration using AMQ 4.1.1
>> and a slightly stripped down version of the default configuration files.
>> (I originally tried with AMQ 5.0.0 but had too many problems, so I
>> dropped back a release.) After the Master and Slave seem to start up
>> okay, the system doesn't work properly when I send messages using the
>> default Producer application with this failover URL in the build.xml
>> file:
>> 
>> <property name="url"
>> value="failover:(tcp://macserver:61616,tcp://localhost:61616)?initialReconnectDelay=100"
>> />
>> 
>> In that line, "macserver" is the name of the Master server (a Mac OS X
>> system) and localhost is my Slave system (Windows XP).
>> 
>> Once I type
>> 
>> ant producer
>> 
>> with this configuration, the Master system throws this exception for each
>> message that is sent:
>> 
>> ERROR MasterBroker                   - Slave Failed
>> java.lang.AssertionError: Unsupported Method
>>         at
>> org.apache.activemq.transport.TransportSupport.request(TransportSupport.java:71)
>>         at
>> org.apache.activemq.transport.TransportFilter.request(TransportFilter.java:88)
>>         at
>> org.apache.activemq.transport.TransportFilter.request(TransportFilter.java:88)
>>         at
>> org.apache.activemq.transport.MutexTransport.request(MutexTransport.java:54)
>>         at
>> org.apache.activemq.broker.ft.MasterBroker.sendSyncToSlave(MasterBroker.java:363)
>>         at
>> org.apache.activemq.broker.ft.MasterBroker.sendToSlave(MasterBroker.java:345)
>>         at
>> org.apache.activemq.broker.ft.MasterBroker.acknowledge(MasterBroker.java:320)
>>         at
>> org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:88)
>>         at
>> org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:506)
>>         at
>> org.apache.activemq.command.MessageAck.visit(MessageAck.java:179)
>>         at
>> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294)
>>         at
>> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:185)
>>         at
>> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65)
>>         at
>> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:133)
>>         at
>> org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
>>         at
>> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
>>         at
>> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137)
>>         at java.lang.Thread.run(Thread.java:613)
>> 
>> When I use the "browse" command the Master does show that my messages are
>> in the queue, but when I check the Slave it has no messages. The Slave
>> system also does not throw any exceptions. It just shows this message:
>> 
>> Loading message broker from: xbean:activemq.xml
>> INFO  BrokerService                  - ActiveMQ 4.1.1 JMS Message Broker
>> (localhost) is starting
>> INFO  BrokerService                  - For help or more information
>> please see: http://incubator.apache.org/activemq/
>> INFO  ManagementContext              - JMX consoles can connect to
>> service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
>> INFO  JDBCPersistenceAdapter         - Database driver recognized:
>> [apache_derby_embedded_jdbc_driver]
>> INFO  DefaultDatabaseLocker          - Attempting to acquire the
>> exclusive lock to become the Master broker
>> INFO  DefaultDatabaseLocker          - Becoming the master on dataSource:
>> org.apache.derby.jdbc.EmbeddedDataSource@92668c
>> INFO  JournalPersistenceAdapter      - Journal Recovery Started from:
>> Active Journal: using 5 x 20.0 Megs at:
>> C:\Work\PureMasterSlave\Slave-411\activemq-data\journal
>> INFO  JournalPersistenceAdapter      - Journal Recovered: 0 message(s) in
>> transactions recovered.
>> INFO  TransportServerThreadSupport   - Listening for connections at:
>> tcp://winxp911:61616
>> INFO  TransportConnector             - Connector openwire Started
>> INFO  TransportServerThreadSupport   - Listening for connections at:
>> stomp://winxp911:61613
>> INFO  TransportConnector             - Connector stomp Started
>> INFO  TransportConnector             - Connector vm://localhost Started
>> INFO  MasterConnector                - Starting a network connection
>> between vm://localhost#0 and tcp://null:0 has been established.
>> INFO  BrokerService                  - ActiveMQ JMS Message Broker
>> (localhost, ID:winxp911-1560-1203001783263-2:0) started
>> INFO  MasterConnector                - Slave connection between
>> vm://localhost#0 and tcp://macserver/172.30.28.88:61616 has been
>> established.
>> 
>> The Master continues to save new messages to my queue, but throws that
>> same exception for each new message added.
>> 
>> Here are my activemq.xml configuration files:
>> 
>> MASTER
>> ------
>> 
>> <beans>
>> 
>>   <!-- Allows us to use system properties as variables in this
>> configuration file -->
>>   <bean
>> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
>>   
>>   <broker brokerName="localhost" useJmx="true"
>> xmlns="http://activemq.org/config/1.0">
>>   
>>     <persistenceAdapter>
>>         <journaledJDBC journalLogFiles="5"
>> dataDirectory="${activemq.base}/activemq-data"/>
>>     </persistenceAdapter>
>>   
>>     <transportConnectors>
>>        <transportConnector name="openwire" uri="tcp://localhost:61616"
>> discoveryUri="multicast://default"/>
>>        <transportConnector name="ssl"     uri="ssl://localhost:61617"/>
>>        <transportConnector name="stomp"   uri="stomp://localhost:61613"/>
>>     </transportConnectors>
>>     
>>   </broker>
>>   
>> </beans>
>> 
>> 
>> SLAVE
>> -----
>> 
>> <beans>
>> 
>>   <!-- Allows us to use system properties as variables in this
>> configuration file -->
>>   <bean
>> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
>>   
>>   <broker brokerName="localhost" xmlns="http://activemq.org/config/1.0"
>> masterConnectorURI="tcp://macserver:61616"
>> shutdownOnMasterFailure="false">
>>   
>>     <persistenceAdapter>
>>         <journaledJDBC journalLogFiles="5"
>> dataDirectory="${activemq.base}/activemq-data"/>
>>     </persistenceAdapter>
>>   
>>     <transportConnectors>
>>        <transportConnector name="openwire" uri="tcp://localhost:61616"
>> discoveryUri="multicast://default"/>
>>        <transportConnector name="stomp"   uri="stomp://localhost:61613"/>
>>     </transportConnectors>
>>     
>>   </broker>
>>   
>> </beans>
>> 
>> Finally, I've totally dropped the firewalls on both systems, and the Mac
>> (Master) is using Java 1.5.0_07, and the Windows system (Slave) is using
>> 1.6.0_04. 
>> 
>> I'd appreciate it if anyone can help troubleshoot this problem. I haven't
>> changed much from the default values, and looking at the docs on the site
>> I think I'm doing everything right, but it's not working.
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Pure-Master-Slave-not-working-tp15481240s2354p15491043.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message