3 Replies Latest reply on May 19, 2010 12:11 PM by garytully

    Big issue with Master / Slave - Master broker is blocked !!!

    cmoulliard

      Hi,

       

      We are using Fuse 5.3.0-fuse-01-00 and have configured it as a pure master / slave config. Unfortunately, using the following config betwenn the master and the slave, we can block the producers of the messages and also the connection to the master. This is BLOCKING because we should stop the master broker (and slave too) in order to be able to continue to produce/consume messages

       

      What is wrong ? our config or a bug not solved in the replication mechanism between the master / slave ?

      Is this approach the recommended for the future or to use SAN / JDBC ?

       

      To reproduce the issue, use the following master/slave config and ant command to produce/consume messages.

       

      Slave

       

       

       

      ant producer -Durl="tcp://0.0.0.0:61616" -Dmax=10000

       

      ant consumer -Durl="tcp://0.0.0.0:61616" -Dmax=100 -DsleepTime=200

       

      Kind regards,

       

      Charles

        • 1. Re: Big issue with Master / Slave - Master broker is blocked !!!
          ade

          Hi Charles,

           

          Not sure what's causing the blocking; I will say though that the recommended approach is to use SAN or JDBC in general. The pure master-slave replication approach is flawed in that AMQ doesn't have an elegant solution for resynchronizing the master's store when you restart it after failure.

           

          /Ade

          • 2. Re: Big issue with Master / Slave - Master broker is blocked !!!
            cmoulliard

            Hi,

             

            If I use the option producerFlowControl=false on the queues used for the replication, this problem does not appear anymore.

             

            By the way, if we cannot guarantee that the replication mechanism is stable enough

            and that the messages produced are well acknowledged (at the producer site and at the consumer side when consumed) and the information is well synchronised like the sessions, transactions betweeb the two brokers, it make no sense to continue to investigate it and SAN/JDBC should become the recommended approach !

             

            Is it possible in a configuration where we configure 2 brokers in a pipeline using networkConnector to push messages from the master to the slave even if no consumers are connected to the slave ?

             

            Kind regards,

             

            Charles

            • 3. Re: Big issue with Master / Slave - Master broker is blocked !!!
              garytully

              yeah, producerFlowControl is not considered in the replication, it is a simple pipe between the two brokers, so memory limits on the slave can be reached (blocking replication) before flow control kicks in on the master which can lead to the problem you describe. Removing usage limits on the slave should help.

               

              But as Ade indicates, from a failover/fault tolerance perspective, shared file system or shared jdbc gives a better recovery strategy as the state is externalized and shared.

               

              A network of brokers implements store and forward, so a message is not replicated, it is moved. It is possible to configure a set of static destinations for a network connector that will be auto forwarded irrespective of demand, but the usecase is typically scalability rather than fault tolerance.

               

              What are your fault tolerant requirements?