Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id EB2F2200C77 for ; Mon, 1 May 2017 15:50:54 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E9A69160BAE; Mon, 1 May 2017 13:50:54 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 15D6D160BAB for ; Mon, 1 May 2017 15:50:53 +0200 (CEST) Received: (qmail 34390 invoked by uid 500); 1 May 2017 13:50:53 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 34381 invoked by uid 99); 1 May 2017 13:50:53 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 May 2017 13:50:53 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 29E05DF9FD; Mon, 1 May 2017 13:50:53 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: clebertsuconic@apache.org To: commits@activemq.apache.org Message-Id: <6f2153382a6049578a34ee327a5000be@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: activemq-artemis git commit: Revert " ARTEMIS-1112: don't block live activation if another live server is running" Date: Mon, 1 May 2017 13:50:53 +0000 (UTC) archived-at: Mon, 01 May 2017 13:50:55 -0000 Repository: activemq-artemis Updated Branches: refs/heads/master 7f70e4b6f -> 6df8c3a28 Revert " ARTEMIS-1112: don't block live activation if another live server is running" This reverts commit 2f175b8d4ef00fe3b9a6388cc4beab7fa22461c1. Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/6df8c3a2 Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/6df8c3a2 Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/6df8c3a2 Branch: refs/heads/master Commit: 6df8c3a28d113063c89da06f0875d18cead0cd56 Parents: 7f70e4b Author: Clebert Suconic Authored: Mon May 1 09:50:45 2017 -0400 Committer: Clebert Suconic Committed: Mon May 1 09:50:45 2017 -0400 ---------------------------------------------------------------------- .../server/impl/SharedStoreLiveActivation.java | 26 +++-- .../SharedStoreLiveStartsAsBackupTest.java | 104 ------------------- 2 files changed, 12 insertions(+), 118 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6df8c3a2/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java index 52e656f..485ae16 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java @@ -19,7 +19,6 @@ package org.apache.activemq.artemis.core.server.impl; import org.apache.activemq.artemis.core.server.ActiveMQServerLogger; import org.apache.activemq.artemis.core.server.NodeManager; import org.apache.activemq.artemis.core.server.cluster.ha.SharedStoreMasterPolicy; -import org.apache.activemq.artemis.core.server.cluster.ha.SharedStoreSlavePolicy; import org.jboss.logging.Logger; public final class SharedStoreLiveActivation extends LiveActivation { @@ -39,19 +38,6 @@ public final class SharedStoreLiveActivation extends LiveActivation { @Override public void run() { try { - if (activeMQServer.getNodeManager().isBackupLive()) { - /* - * looks like there is already a live server running and we should start as backup server - * so when the current live goes down they failover to us - */ - if (logger.isDebugEnabled()) { - logger.debug("announcing backup to the former live " + this); - } - - activeMQServer.setHAPolicy(new SharedStoreSlavePolicy(sharedStoreMasterPolicy.isFailoverOnServerShutdown(), false, false, null)); - return; - } - ActiveMQServerLogger.LOGGER.awaitingLiveLock(); activeMQServer.checkJournalDirectory(); @@ -63,6 +49,18 @@ public final class SharedStoreLiveActivation extends LiveActivation { if (!activeMQServer.initialisePart1(false)) return; + if (activeMQServer.getNodeManager().isBackupLive()) { + /* + * looks like we've failed over at some point need to inform that we are the backup + * so when the current live goes down they failover to us + */ + if (logger.isDebugEnabled()) { + logger.debug("announcing backup to the former live" + this); + } + activeMQServer.getBackupManager().start(); + activeMQServer.getBackupManager().announceBackup(); + } + activeMQServer.registerActivateCallback(activeMQServer.getNodeManager().startLiveNode()); if (activeMQServer.getState() == ActiveMQServerImpl.SERVER_STATE.STOPPED || activeMQServer.getState() == ActiveMQServerImpl.SERVER_STATE.STOPPING) { http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6df8c3a2/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/SharedStoreLiveStartsAsBackupTest.java ---------------------------------------------------------------------- diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/SharedStoreLiveStartsAsBackupTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/SharedStoreLiveStartsAsBackupTest.java deleted file mode 100644 index 24bdff3..0000000 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/SharedStoreLiveStartsAsBackupTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.activemq.artemis.tests.integration.cluster.failover; - -import java.util.concurrent.TimeUnit; - -import org.apache.activemq.artemis.core.config.Configuration; -import org.apache.activemq.artemis.core.config.ha.SharedStoreMasterPolicyConfiguration; -import org.apache.activemq.artemis.core.server.ActiveMQServer; -import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType; -import org.apache.activemq.artemis.tests.integration.cluster.distribution.ClusterTestBase; -import org.junit.Before; -import org.junit.Test; - -public class SharedStoreLiveStartsAsBackupTest extends ClusterTestBase { - - @Override - @Before - public void setUp() throws Exception { - super.setUp(); - - setupServers(); - } - - private void setupServers() throws Exception { - // Two live servers with same shared storage, using a shared lock file - - // 1. configure 0 as backup of one to share the same node manager and file - // storage locations - setupBackupServer(0, 1, isFileStorage(), true, isNetty()); - setupLiveServer(1, isFileStorage(), true, isNetty(), false); - - // now reconfigure the HA policy for both servers to master with automatic - // failover - setupSharedStoreMasterPolicy(0); - setupSharedStoreMasterPolicy(1); - - // configure cluster for bother servers - setupClusterConnection("cluster", "queues", MessageLoadBalancingType.ON_DEMAND, 1, isNetty(), 0, 1); - setupClusterConnection("cluster", "queues", MessageLoadBalancingType.ON_DEMAND, 1, isNetty(), 1, 0); - } - - private void setupSharedStoreMasterPolicy(int node) { - ActiveMQServer server = getServer(node); - SharedStoreMasterPolicyConfiguration liveConfiguration = new SharedStoreMasterPolicyConfiguration(); - liveConfiguration.setFailoverOnServerShutdown(true); - - Configuration config = server.getConfiguration(); - - config.setHAPolicyConfiguration(liveConfiguration); - } - - private boolean isNetty() { - return true; - } - - @Test - public void startupLiveAndBackups() throws Exception { - // startup 2 live server -> 2nd becomes backup of first - startServers(0, 1); - - setupSessionFactory(0, isNetty()); - - createQueue(0, "queues.testaddress", "queue0", null, false); - - ActiveMQServer server0 = getServer(0); - ActiveMQServer server1 = getServer(1); - - // server 0 is live - assertTrue(server0.waitForActivation(0, TimeUnit.SECONDS)); - // server 1 is backup - assertFalse(server1.waitForActivation(0, TimeUnit.SECONDS)); - - server0.stop(); - // now server 1 becomes live - assertTrue(server1.waitForActivation(5, TimeUnit.SECONDS)); - - server0.start(); - // after restart, server 0 becomes backup - assertFalse(server0.waitForActivation(1, TimeUnit.SECONDS)); - - server1.stop(); - // now server 0 becomes live again - assertTrue(server0.waitForActivation(5, TimeUnit.SECONDS)); - - server1.start(); - // after restart, server 1 becomes backup again - assertFalse(server1.waitForActivation(1, TimeUnit.SECONDS)); - } -}