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 2017/10/06 08:06:46 UTC
[22/23] brooklyn-server git commit: address review comments
address review comments
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/2dcb0a03
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/2dcb0a03
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/2dcb0a03
Branch: refs/heads/master
Commit: 2dcb0a03a9e9b27a81535a13bd48d1958f8984d9
Parents: 9213f0e
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Oct 6 01:04:34 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Fri Oct 6 01:12:43 2017 +0100
----------------------------------------------------------------------
.../apache/brooklyn/api/mgmt/ExecutionContext.java | 2 +-
.../apache/brooklyn/api/mgmt/ManagementContext.java | 3 +++
.../brooklyn/core/config/ConfigConstraints.java | 2 +-
.../mgmt/internal/AbstractManagementContext.java | 16 ++++++++++++++++
.../internal/NonDeploymentManagementContext.java | 9 +++++++++
.../core/mgmt/rebind/RebindManagerImpl.java | 3 ++-
.../brooklyn/core/objs/AbstractEntityAdjunct.java | 6 +-----
.../util/core/task/BasicExecutionManager.java | 5 ++++-
.../brooklyn/core/entity/EntityAssertsTest.java | 3 ++-
.../mgmt/internal/LocalSubscriptionManagerTest.java | 8 +++-----
10 files changed, 42 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/api/src/main/java/org/apache/brooklyn/api/mgmt/ExecutionContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/mgmt/ExecutionContext.java b/api/src/main/java/org/apache/brooklyn/api/mgmt/ExecutionContext.java
index 2d8fe23..d303ba9 100644
--- a/api/src/main/java/org/apache/brooklyn/api/mgmt/ExecutionContext.java
+++ b/api/src/main/java/org/apache/brooklyn/api/mgmt/ExecutionContext.java
@@ -62,7 +62,7 @@ public interface ExecutionContext extends Executor {
@Deprecated
<T> Task<T> submit(Callable<T> callable);
- /** {@link ExecutionManager#submit(String Runnable) */
+ /** {@link ExecutionManager#submit(String, Runnable) */
Task<?> submit(String displayName, Runnable runnable);
/** {@link ExecutionManager#submit(String, Callable) */
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/api/src/main/java/org/apache/brooklyn/api/mgmt/ManagementContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/mgmt/ManagementContext.java b/api/src/main/java/org/apache/brooklyn/api/mgmt/ManagementContext.java
index 00dd4d3..c1a2c21 100644
--- a/api/src/main/java/org/apache/brooklyn/api/mgmt/ManagementContext.java
+++ b/api/src/main/java/org/apache/brooklyn/api/mgmt/ManagementContext.java
@@ -166,6 +166,9 @@ public interface ManagementContext {
*/
ExecutionContext getExecutionContext(Entity entity);
+ /** As {@link #getExecutionContext(Entity)} where there is also an adjunct */
+ ExecutionContext getExecutionContext(Entity e, EntityAdjunct a);
+
/**
* Returns a {@link SubscriptionContext} instance representing subscriptions
* (from the {@link SubscriptionManager}) associated with this entity, and capable
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java
index c4ce81d..682dedb 100644
--- a/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java
+++ b/core/src/main/java/org/apache/brooklyn/core/config/ConfigConstraints.java
@@ -117,7 +117,7 @@ public abstract class ConfigConstraints<T extends BrooklynObject> {
public Iterable<ConfigKey<?>> getViolations() {
ExecutionContext exec =
getBrooklynObject() instanceof EntityInternal ? ((EntityInternal)getBrooklynObject()).getExecutionContext() :
- // getBrooklynObject() instanceof AbstractEntityAdjunct ? ((AbstractEntityAdjunct)getBrooklynObject()).getExecutionContext() :
+ getBrooklynObject() instanceof AbstractEntityAdjunct ? ((AbstractEntityAdjunct)getBrooklynObject()).getExecutionContext() :
null;
if (exec!=null) {
return exec.get(
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/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 7a0fabd..27645bc 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
@@ -71,6 +71,7 @@ import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContex
import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
import org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl;
import org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl;
+import org.apache.brooklyn.core.objs.AbstractEntityAdjunct;
import org.apache.brooklyn.core.typereg.BasicBrooklynTypeRegistry;
import org.apache.brooklyn.util.collections.MutableList;
import org.apache.brooklyn.util.core.ResourceUtils;
@@ -245,6 +246,21 @@ public abstract class AbstractManagementContext implements ManagementContextInte
return ((EntityInternal)e).getExecutionContext();
}
}
+
+ @Override
+ public ExecutionContext getExecutionContext(Entity e, EntityAdjunct adjunct) {
+ // BEC is a thin wrapper around EM so fine to create a new one here; but make sure it gets the real entity
+ if (e instanceof AbstractEntityAdjunct) {
+ ImmutableSet<Object> tags = ImmutableSet.<Object>of(
+ BrooklynTaskTags.tagForContextAdjunct(adjunct),
+ BrooklynTaskTags.tagForContextEntity(e),
+ this
+ );
+ return new BasicExecutionContext(getExecutionManager(), tags);
+ } else {
+ return ((EntityInternal)e).getExecutionContext();
+ }
+ }
@Override
public ExecutionContext getServerExecutionContext() {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java
index bac7aeb..b5fd0b5 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentManagementContext.java
@@ -282,6 +282,15 @@ public class NonDeploymentManagementContext implements ManagementContextInternal
}
@Override
+ public ExecutionContext getExecutionContext(Entity entity, EntityAdjunct adjunct) {
+ if (!this.entity.equals(entity)) throw new IllegalStateException("Non-deployment context "+this+" can only use a single Entity: has "+this.entity+", but passed "+entity);
+ if (mode==NonDeploymentManagementContextMode.MANAGEMENT_STOPPED)
+ throw new IllegalStateException("Entity "+entity+" is no longer managed; execution context not available");
+ checkInitialManagementContextReal();
+ return initialManagementContext.getExecutionContext(entity, adjunct);
+ }
+
+ @Override
public ExecutionContext getServerExecutionContext() {
return initialManagementContext.getServerExecutionContext();
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
index f5a1c0c..0830900 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
@@ -490,7 +490,8 @@ public class RebindManagerImpl implements RebindManager {
ExecutionContext ec = BasicExecutionContext.getCurrentExecutionContext();
if (ec == null) {
ec = managementContext.getServerExecutionContext();
- return ec.get(Tasks.<List<Application>>builder().displayName("rebind").dynamic(false).body(() -> rebindImpl(classLoader, exceptionHandler, mode)).build());
+ return ec.get(Tasks.<List<Application>>builder().displayName("rebind").dynamic(false)
+ .body(() -> rebindImpl(classLoader, exceptionHandler, mode)).build());
} else {
return rebindImpl(classLoader, exceptionHandler, mode);
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
index c6cb74c..7b2f6ad 100644
--- a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
+++ b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
@@ -54,15 +54,12 @@ import org.apache.brooklyn.core.enricher.AbstractEnricher;
import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.entity.EntityInternal;
import org.apache.brooklyn.core.entity.internal.ConfigUtilsInternal;
-import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
import org.apache.brooklyn.core.mgmt.internal.SubscriptionTracker;
-import org.apache.brooklyn.util.collections.MutableList;
import org.apache.brooklyn.util.collections.MutableSet;
import org.apache.brooklyn.util.core.config.ConfigBag;
import org.apache.brooklyn.util.core.flags.FlagUtils;
import org.apache.brooklyn.util.core.flags.SetFromFlag;
import org.apache.brooklyn.util.core.flags.TypeCoercions;
-import org.apache.brooklyn.util.core.task.BasicExecutionContext;
import org.apache.brooklyn.util.text.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -428,8 +425,7 @@ public abstract class AbstractEntityAdjunct extends AbstractBrooklynObject imple
public void setEntity(EntityLocal entity) {
if (destroyed.get()) throw new IllegalStateException("Cannot set entity on a destroyed entity adjunct");
this.entity = entity;
- this.execution = new BasicExecutionContext( getManagementContext().getExecutionManager(),
- MutableList.of(BrooklynTaskTags.tagForContextAdjunct(this), BrooklynTaskTags.tagForContextEntity(entity)) );
+ this.execution = getManagementContext().getExecutionContext(entity, this);
if (entity!=null && getCatalogItemId() == null) {
setCatalogItemIdAndSearchPath(entity.getCatalogItemId(), entity.getCatalogItemIdSearchPath());
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
index c7a9855..c53277d 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
@@ -799,7 +799,10 @@ public class BasicExecutionManager implements ExecutionManager {
Task<T> t = Tasks.<T>builder().dynamic(false).displayName(displayName+" (placeholder for "+id+")")
.description("Details of the original task have been forgotten.")
.body(Callables.returning((T)null)).build();
- ((BasicTask<T>)t).ignoreIfNotRun();
+ // don't really want anyone executing the "gone" task...
+ // also if we are GC'ing tasks then cancelled may help with cleanup
+ // of sub-tasks that have lost their submitted-by-task reference ?
+ // also don't want warnings when it's finalized, this means we don't need ignoreIfNotRun()
((BasicTask<T>)t).cancelled = true;
return t;
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java
index 3160518..2967f22 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java
@@ -83,7 +83,8 @@ public class EntityAssertsTest extends BrooklynAppUnitTestSupport {
entity.sensors().set(TestEntity.NAME, "before");
final String after = "after";
- Task<?> assertValue = entity.getExecutionContext().submit("assert attr equals", () -> EntityAsserts.assertAttributeEqualsEventually(entity, TestEntity.NAME, after));
+ Task<?> assertValue = entity.getExecutionContext().submit("assert attr equals",
+ () -> EntityAsserts.assertAttributeEqualsEventually(entity, TestEntity.NAME, after));
entity.sensors().set(TestEntity.NAME, after);
assertValue.get();
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2dcb0a03/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/LocalSubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/LocalSubscriptionManagerTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/LocalSubscriptionManagerTest.java
index 1373545..5c04978 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/LocalSubscriptionManagerTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/LocalSubscriptionManagerTest.java
@@ -193,8 +193,7 @@ public class LocalSubscriptionManagerTest extends BrooklynAppUnitTestSupport {
// delivery should be in subscription order, so 123 then 456
entity.subscriptions().subscribe(ImmutableMap.of("notifyOfInitialValue", true), entity, TestEntity.SEQUENCE, listener);
// wait for the above delivery - otherwise it might get dropped
- Asserts.succeedsEventually(MutableMap.of("timeout", Duration.seconds(5)), () -> {
- Asserts.assertSize(listener.getEvents(), 1); });
+ Asserts.succeedsEventually(() -> Asserts.assertSize(listener.getEvents(), 1));
entity.sensors().set(TestEntity.SEQUENCE, 456);
// notifications don't have "initial value" so don't get -1
@@ -207,8 +206,7 @@ public class LocalSubscriptionManagerTest extends BrooklynAppUnitTestSupport {
entity.subscriptions().subscribe(ImmutableMap.of("notifyOfInitialValue", true), entity, TestEntity.SERVICE_STATE_ACTUAL, listener);
entity.subscriptions().subscribe(ImmutableMap.of("notifyOfInitialValue", true), entity, TestEntity.NAME, listener);
- Asserts.succeedsEventually(MutableMap.of("timeout", Duration.seconds(5)), new Runnable() {
- @Override public void run() {
+ Asserts.succeedsEventually(() -> {
Asserts.assertEquals(listener.getEvents(), ImmutableList.of(
new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, entity, 123),
new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, entity, 456),
@@ -216,7 +214,7 @@ public class LocalSubscriptionManagerTest extends BrooklynAppUnitTestSupport {
new BasicSensorEvent<Lifecycle>(TestEntity.SERVICE_STATE_ACTUAL, entity, Lifecycle.STOPPING),
new BasicSensorEvent<String>(TestEntity.NAME, entity, "myname")),
"actually got: "+listener.getEvents());
- }});
+ });
}
@Test