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())+"]";
+    }
 }

Reply via email to