Repository: brooklyn-server Updated Branches: refs/heads/master 6e5c2c252 -> fe312927d
BROOKLYN-120: fix NPE in /v1/server/up/extended Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/a78b98c9 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/a78b98c9 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/a78b98c9 Branch: refs/heads/master Commit: a78b98c9761b5e0c644da4aa0835d133402dfd91 Parents: 6e5c2c2 Author: Aled Sage <[email protected]> Authored: Wed Jul 19 10:32:51 2017 +0100 Committer: Aled Sage <[email protected]> Committed: Wed Jul 19 10:32:51 2017 +0100 ---------------------------------------------------------------------- .../core/mgmt/ha/HighAvailabilityManagerImpl.java | 5 ++--- .../mgmt/internal/AbstractManagementContext.java | 9 +++++++++ .../core/mgmt/internal/LocalManagementContext.java | 15 ++++----------- 3 files changed, 15 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/a78b98c9/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java index 11cf9f3..a4f8870 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java @@ -129,7 +129,7 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager { private static final Logger LOG = LoggerFactory.getLogger(HighAvailabilityManagerImpl.class); private final ManagementContextInternal managementContext; - private volatile String ownNodeId; + private final String ownNodeId; private volatile ManagementPlaneSyncRecordPersister persister; private volatile PromotionListener promotionListener; private volatile MasterChooser masterChooser = new AlphabeticMasterChooser(); @@ -163,6 +163,7 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager { public HighAvailabilityManagerImpl(ManagementContextInternal managementContext) { this.managementContext = managementContext; + ownNodeId = managementContext.getManagementNodeId(); startTimeUtc = localTickerUtc.read(); } @@ -242,7 +243,6 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager { @Override public void disabled() { disabled = true; - ownNodeId = managementContext.getManagementNodeId(); // this is notionally the master, just not running; see javadoc for more info stop(ManagementNodeState.MASTER); @@ -276,7 +276,6 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager { } } - ownNodeId = managementContext.getManagementNodeId(); // TODO Small race in that we first check, and then we'll do checkMaster() on first poll, // so another node could have already become master or terminated in that window. ManagementPlaneSyncRecord planeRec = loadManagementPlaneSyncRecord(false); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/a78b98c9/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java index 0a44688..b04cea4 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java @@ -80,6 +80,7 @@ import org.apache.brooklyn.util.core.task.Tasks; import org.apache.brooklyn.util.exceptions.Exceptions; import org.apache.brooklyn.util.guava.Maybe; import org.apache.brooklyn.util.javalang.Reflections; +import org.apache.brooklyn.util.text.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -132,6 +133,7 @@ public abstract class AbstractManagementContext implements ManagementContextInte } private final AtomicLong totalEffectorInvocationCount = new AtomicLong(); + private final String managementNodeId; protected DeferredBrooklynProperties configMap; protected Scratchpad scratchpad; @@ -163,6 +165,8 @@ public abstract class AbstractManagementContext implements ManagementContextInte protected CatalogInitialization catalogInitialization; public AbstractManagementContext(BrooklynProperties brooklynProperties) { + this.managementNodeId = Strings.makeRandomId(8); + this.configMap = new DeferredBrooklynProperties(brooklynProperties, this); this.scratchpad = new BasicScratchpad(); this.entityDriverManager = new BasicEntityDriverManager(); @@ -201,6 +205,11 @@ public abstract class AbstractManagementContext implements ManagementContextInte } @Override + public String getManagementNodeId() { + return managementNodeId; + } + + @Override public BrooklynStorage getStorage() { return storage; } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/a78b98c9/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java index 7d82c52..4836d70 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java @@ -127,9 +127,8 @@ public class LocalManagementContext extends AbstractManagementContext { return closed; } - private AtomicBoolean terminated = new AtomicBoolean(false); + private final AtomicBoolean terminated = new AtomicBoolean(false); private String managementPlaneId; - private String managementNodeId; private BasicExecutionManager execution; private SubscriptionManager subscriptions; private LocalEntityManager entityManager; @@ -172,7 +171,6 @@ public class LocalManagementContext extends AbstractManagementContext { checkNotNull(configMap, "brooklynProperties"); - this.managementNodeId = Strings.makeRandomId(8); this.builder = builder; this.brooklynAdditionalProperties = brooklynAdditionalProperties; if (brooklynAdditionalProperties != null) @@ -206,25 +204,20 @@ public class LocalManagementContext extends AbstractManagementContext { public void setManagementPlaneId(String newPlaneId) { if (managementPlaneId != null && !managementPlaneId.equals(newPlaneId)) { - log.warn("Management plane ID at {} {} changed from {} to {} (can happen on concurrent startup of multiple nodes)", new Object[] { managementNodeId, getHighAvailabilityManager().getNodeState(), managementPlaneId, newPlaneId }); - log.debug("Management plane ID at {} {} changed from {} to {} (can happen on concurrent startup of multiple nodes)", new Object[] {managementNodeId, getHighAvailabilityManager().getNodeState(), managementPlaneId, newPlaneId, new RuntimeException("Stack trace for setManagementPlaneId")}); + log.warn("Management plane ID at {} {} changed from {} to {} (can happen on concurrent startup of multiple nodes)", new Object[] { getManagementNodeId(), getHighAvailabilityManager().getNodeState(), managementPlaneId, newPlaneId }); + log.debug("Management plane ID at {} {} changed from {} to {} (can happen on concurrent startup of multiple nodes)", new Object[] {getManagementNodeId(), getHighAvailabilityManager().getNodeState(), managementPlaneId, newPlaneId, new RuntimeException("Stack trace for setManagementPlaneId")}); } this.managementPlaneId = newPlaneId; } public void generateManagementPlaneId() { if (this.managementPlaneId != null) { - throw new IllegalStateException("Request to generate a management plane ID for node "+managementNodeId+" but one already exists (" + managementPlaneId + ")"); + throw new IllegalStateException("Request to generate a management plane ID for node "+getManagementNodeId()+" but one already exists (" + managementPlaneId + ")"); } this.managementPlaneId = Strings.makeRandomId(8); } @Override - public String getManagementNodeId() { - return managementNodeId; - } - - @Override public void prePreManage(Entity entity) { getEntityManager().prePreManage(entity); }
