You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/11/19 18:47:59 UTC
[04/13] incubator-brooklyn git commit: allow explicit setting master
allow explicit setting master
this is in fact needed, as otherwise if a previous master has failed we have no way to force a new master sooner than the heartbeat timeout
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/288ffd71
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/288ffd71
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/288ffd71
Branch: refs/heads/master
Commit: 288ffd7105808402a7f3479e709f5f85d3ea36f1
Parents: b0bb61a
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Tue Nov 18 23:43:06 2014 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Nov 19 13:53:07 2014 +0000
----------------------------------------------------------------------
.../management/ha/HighAvailabilityManagerImpl.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/288ffd71/core/src/main/java/brooklyn/management/ha/HighAvailabilityManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/ha/HighAvailabilityManagerImpl.java b/core/src/main/java/brooklyn/management/ha/HighAvailabilityManagerImpl.java
index 31ec5b1..3c1196d 100644
--- a/core/src/main/java/brooklyn/management/ha/HighAvailabilityManagerImpl.java
+++ b/core/src/main/java/brooklyn/management/ha/HighAvailabilityManagerImpl.java
@@ -253,7 +253,7 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager {
@VisibleForTesting
@Beta
- public void changeMode(HighAvailabilityMode startMode, boolean preventElectionOnExplicitStandbyMode, boolean failOnExplicitStandbyModeIfNoMaster) {
+ public void changeMode(HighAvailabilityMode startMode, boolean preventElectionOnExplicitStandbyMode, boolean failOnExplicitModesIfUnusual) {
if (!running) {
// if was not running then start as disabled mode, then proceed as normal
LOG.info("HA changing mode to "+startMode+" from "+getInternalNodeState()+" when not running, forcing an intermediate start as DISABLED then will convert to "+startMode);
@@ -334,9 +334,13 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager {
}
break;
case MASTER:
- if (existingMaster == null) {
+ if (!failOnExplicitModesIfUnusual || existingMaster==null) {
promoteToMaster();
- LOG.info("Management node "+ownNodeId+" running as HA MASTER explicitly");
+ if (existingMaster!=null) {
+ LOG.info("Management node "+ownNodeId+" running as HA MASTER explicitly");
+ } else {
+ LOG.info("Management node "+ownNodeId+" running as HA MASTER explicitly, stealing from "+existingMaster);
+ }
} else if (!weAreRecognisedAsMaster) {
throw new IllegalStateException("Master already exists; cannot run as master (master "+existingMaster.toVerboseString()+"); "
+ "to trigger a promotion, set a priority and demote the current master");
@@ -362,7 +366,7 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager {
if (!preventElectionOnExplicitStandbyMode) {
publishAndCheck(true);
}
- if (failOnExplicitStandbyModeIfNoMaster && existingMaster==null) {
+ if (failOnExplicitModesIfUnusual && existingMaster==null) {
LOG.error("Management node "+ownNodeId+" detected no master when "+startMode+" requested and existing master required; failing.");
throw new IllegalStateException("No existing master; cannot start as "+startMode);
}