diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicaPolicy.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicaPolicy.java index 2858d931da..6ec85b49d2 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicaPolicy.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicaPolicy.java @@ -33,6 +33,11 @@ public class ReplicaPolicy extends BackupPolicy { private boolean restartBackup = ActiveMQDefaultConfiguration.isDefaultRestartBackup(); + //used if we create a replicated policy for when we become live. + private boolean allowFailback = ActiveMQDefaultConfiguration.isDefaultAllowAutoFailback(); + + private long failbackDelay = ActiveMQDefaultConfiguration.getDefaultFailbackDelay(); + private ReplicatedPolicy replicatedPolicy; public ReplicaPolicy() { @@ -49,9 +54,9 @@ public class ReplicaPolicy extends BackupPolicy { this.maxSavedReplicatedJournalsSize = maxSavedReplicatedJournalsSize; this.groupName = groupName; this.restartBackup = restartBackup; + this.allowFailback = allowFailback; + this.failbackDelay = failbackDelay; this.scaleDownPolicy = scaleDownPolicy; - //todo check default settings - replicatedPolicy = new ReplicatedPolicy(false, allowFailback, failbackDelay, groupName, clusterName, this); } public ReplicaPolicy(String clusterName, @@ -81,6 +86,9 @@ public class ReplicaPolicy extends BackupPolicy { } public ReplicatedPolicy getReplicatedPolicy() { + if (replicatedPolicy == null) { + replicatedPolicy = new ReplicatedPolicy(false, allowFailback, failbackDelay, groupName, clusterName, this); + } return replicatedPolicy; } @@ -121,6 +129,22 @@ public class ReplicaPolicy extends BackupPolicy { return scaleDownPolicy != null; } + public boolean isAllowFailback() { + return allowFailback; + } + + public void setAllowFailback(boolean allowFailback) { + this.allowFailback = allowFailback; + } + + public long getFailbackDelay() { + return failbackDelay; + } + + public void setFailbackDelay(long failbackDelay) { + this.failbackDelay = failbackDelay; + } + @Override public Activation createActivation(ActiveMQServerImpl server, boolean wasLive, diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicatedPolicy.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicatedPolicy.java index 4cd3e81ac6..85fde90850 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicatedPolicy.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicatedPolicy.java @@ -40,11 +40,12 @@ public class ReplicatedPolicy implements HAPolicy { private long failbackDelay = ActiveMQDefaultConfiguration.getDefaultFailbackDelay(); /* - * this is used as the policy when the server is started after a failover + * this are only used as the policy when the server is started as a live after a failover * */ private ReplicaPolicy replicaPolicy; public ReplicatedPolicy() { + replicaPolicy = new ReplicaPolicy(clusterName, -1, groupName, this); } public ReplicatedPolicy(boolean checkForLiveServer, String groupName, String clusterName) { @@ -54,7 +55,6 @@ public class ReplicatedPolicy implements HAPolicy { /* * we create this with sensible defaults in case we start after a failover * */ - replicaPolicy = new ReplicaPolicy(clusterName, -1, groupName, this); } public ReplicatedPolicy(boolean checkForLiveServer, @@ -100,6 +100,9 @@ public class ReplicatedPolicy implements HAPolicy { } public ReplicaPolicy getReplicaPolicy() { + if (replicaPolicy == null) { + replicaPolicy = new ReplicaPolicy(clusterName, -1, groupName, this); + } return replicaPolicy; } @@ -147,6 +150,10 @@ public class ReplicatedPolicy implements HAPolicy { return null; } + public void setAllowAutoFailBack(boolean allowAutoFailBack) { + this.allowAutoFailBack = allowAutoFailBack; + } + @Override public LiveActivation createActivation(ActiveMQServerImpl server, boolean wasLive, diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/SharedStoreSlavePolicy.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/SharedStoreSlavePolicy.java index 259d38a459..7f2693c151 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/SharedStoreSlavePolicy.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/SharedStoreSlavePolicy.java @@ -47,7 +47,6 @@ public class SharedStoreSlavePolicy extends BackupPolicy { this.restartBackup = restartBackup; this.allowAutoFailBack = allowAutoFailBack; this.scaleDownPolicy = scaleDownPolicy; - sharedStoreMasterPolicy = new SharedStoreMasterPolicy(failbackDelay, failoverOnServerShutdown); } public long getFailbackDelay() { @@ -67,6 +66,9 @@ public class SharedStoreSlavePolicy extends BackupPolicy { } public SharedStoreMasterPolicy getSharedStoreMasterPolicy() { + if (sharedStoreMasterPolicy == null) { + sharedStoreMasterPolicy = new SharedStoreMasterPolicy(failbackDelay, failoverOnServerShutdown); + } return sharedStoreMasterPolicy; }