Repository: incubator-brooklyn Updated Branches: refs/heads/master 3d73c9324 -> 2a18a79c7
group rescan should be triggered by rebind, but not be in critical rebind path (since it might unmanage things, esp in the DynamicMultiGroup subclass, which causes deadlock, as it can't unmanage until management start transition completes) Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/b15d2eb3 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/b15d2eb3 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/b15d2eb3 Branch: refs/heads/master Commit: b15d2eb39cacae090e404ab527f0c1b24b544689 Parents: 78072b2 Author: Alex Heneveld <[email protected]> Authored: Thu Mar 19 16:03:41 2015 +0000 Committer: Alex Heneveld <[email protected]> Committed: Thu Mar 19 16:03:41 2015 +0000 ---------------------------------------------------------------------- .../brooklyn/entity/basic/DynamicGroupImpl.java | 23 ++++++++++++++------ .../internal/EntityManagementSupport.java | 4 ++++ 2 files changed, 20 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b15d2eb3/core/src/main/java/brooklyn/entity/basic/DynamicGroupImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/entity/basic/DynamicGroupImpl.java b/core/src/main/java/brooklyn/entity/basic/DynamicGroupImpl.java index 5241d74..26bc06c 100644 --- a/core/src/main/java/brooklyn/entity/basic/DynamicGroupImpl.java +++ b/core/src/main/java/brooklyn/entity/basic/DynamicGroupImpl.java @@ -32,10 +32,12 @@ import brooklyn.entity.Entity; import brooklyn.event.Sensor; import brooklyn.event.SensorEvent; import brooklyn.event.SensorEventListener; +import brooklyn.management.Task; import brooklyn.management.internal.CollectionChangeListener; import brooklyn.management.internal.ManagementContextInternal; import brooklyn.util.GroovyJavaMethods; import brooklyn.util.exceptions.Exceptions; +import brooklyn.util.task.Tasks; import com.google.common.base.Predicate; import com.google.common.base.Predicates; @@ -163,13 +165,20 @@ public class DynamicGroupImpl extends AbstractGroupImpl implements DynamicGroup } setChangeListener = new MyEntitySetChangeListener(); ((ManagementContextInternal) getManagementContext()).addEntitySetListener(setChangeListener); - try { - rescanEntities(); - } catch (Exception e) { - log.warn("Error rescanning entities when rebinding; may be a group set against an unknown entity: "+e); - log.debug("Trace for rescan entities error", e); - Exceptions.propagateIfFatal(e); - } + Task<Object> rescan = Tasks.builder().name("rescan entities").body( + new Runnable() { + @Override + public void run() { + try { + rescanEntities(); + } catch (Exception e) { + log.warn("Error rescanning entities when rebinding; may be a group set against an unknown entity: "+e); + log.debug("Trace for rescan entities error", e); + Exceptions.propagateIfFatal(e); + } + } + }).build(); + getExecutionContext().submit(rescan); } @Override http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b15d2eb3/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java b/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java index eb9a27f..ef9496c 100644 --- a/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java +++ b/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java @@ -468,4 +468,8 @@ public class EntityManagementSupport { } } + @Override + public String toString() { + return super.toString()+"["+(entity==null ? "null" : entity.getId())+"]"; + } }
