ActiveMQ
  1. ActiveMQ
  2. AMQ-4165

Remove pure master/slave functionality

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.7.0
    • Fix Version/s: 5.8.0
    • Component/s: Broker
    • Labels:
      None

      Description

      Pure master/slave was introduced over 7 years ago a means of getting a tick box for high availability. It is severely limited, in that only one slave is supported, a slave must be running before the master and no attempt is made at synchronising a new slave.

      Unfortunately, pure master/slave is sometimes used as an option by ActiveMQ users, unaware of the dangers of doing so, at extreme risk to themselves and others.

      Pure master/slave is the spawn of hell and should be removed forthwith.

        Issue Links

          Activity

          Hide
          Gary Tully added a comment -

          Going forward, having journal replication and staged index updates is a better design.
          There is no intention to drop the HA ball.

          Some experimental work on journal replication is ongoing and hardening will continue:
          http://activemq.apache.org/kahadb-master-slave.html
          https://github.com/fusesource/fuse-extra/tree/master/fusemq-leveldb (now at apache)

          Show
          Gary Tully added a comment - Going forward, having journal replication and staged index updates is a better design. There is no intention to drop the HA ball. Some experimental work on journal replication is ongoing and hardening will continue: http://activemq.apache.org/kahadb-master-slave.html https://github.com/fusesource/fuse-extra/tree/master/fusemq-leveldb (now at apache)
          Hide
          Gary Tully added a comment -

          Here are some of the known limitations of pure master slave:

          • state replication at the openwire command level is too complex
          • use of a single master connection is a bottleneck
          • inability to catch up on state for a new slave after failover
          Show
          Gary Tully added a comment - Here are some of the known limitations of pure master slave: state replication at the openwire command level is too complex use of a single master connection is a bottleneck inability to catch up on state for a new slave after failover
          Hide
          SL added a comment -

          The functionnality provided by this mode had its issues
          (such the one i stumbled upon https://issues.apache.org/jira/browse/AMQ-3688 )
          But it was exposed as a valid option in the documentation until recently (and not completly removed yet) ; cutting it like that is harsh. None of the few "alternatives" can handle the same use cases, and are expecting a very different set of requirements (such as a database or a shared filesystem).
          Is there any plan to complete the amq options in this area or is the project dropping the ball on HA ?

          Show
          SL added a comment - The functionnality provided by this mode had its issues (such the one i stumbled upon https://issues.apache.org/jira/browse/AMQ-3688 ) But it was exposed as a valid option in the documentation until recently (and not completly removed yet) ; cutting it like that is harsh. None of the few "alternatives" can handle the same use cases, and are expecting a very different set of requirements (such as a database or a shared filesystem). Is there any plan to complete the amq options in this area or is the project dropping the ball on HA ?
          Hide
          Martin Serrano added a comment -

          so what alternative is there when a SAN/shared disk is not available?

          Show
          Martin Serrano added a comment - so what alternative is there when a SAN/shared disk is not available?
          Hide
          Timothy Bish added a comment -

          Removed the pure master slave unit tests that were failing to build due to these code changes.

          Show
          Timothy Bish added a comment - Removed the pure master slave unit tests that were failing to build due to these code changes.
          Hide
          Timothy Bish added a comment -

          While the functionality has been removed there are some tests for this that are still part of the build and cause build failures in activemq-core, notably:

          activemq-core/src/test/java/org/apache/activemq/advisory/MasterSlaveTempQueueMemoryTest.java
          activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveDieTest.java
          activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveShutdownTest.java
          activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveProducerFlowControlTest.java
          activemq-core/src/test/java/org/apache/activemq/broker/ft/TransactedTopicMasterSlaveTest.java
          activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2102Test.java
          activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2183Test.java

          These should probably be removed as well. Its possible there are other broken tests that use XML configs, not sure though.

          Show
          Timothy Bish added a comment - While the functionality has been removed there are some tests for this that are still part of the build and cause build failures in activemq-core, notably: activemq-core/src/test/java/org/apache/activemq/advisory/MasterSlaveTempQueueMemoryTest.java activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveDieTest.java activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveShutdownTest.java activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveProducerFlowControlTest.java activemq-core/src/test/java/org/apache/activemq/broker/ft/TransactedTopicMasterSlaveTest.java activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2102Test.java activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2183Test.java These should probably be removed as well. Its possible there are other broken tests that use XML configs, not sure though.
          Hide
          Rob Davies added a comment -

          Resolved by SVN revision 1408651

          Show
          Rob Davies added a comment - Resolved by SVN revision 1408651

            People

            • Assignee:
              Rob Davies
              Reporter:
              Rob Davies
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development