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 2016/02/08 11:43:30 UTC
brooklyn-server git commit: fix intermittent failing
ItemsInContainersGroupTest.testItemUnmanagedIsRemoved by ensuring group
removal is done first
Repository: brooklyn-server
Updated Branches:
refs/heads/master b6247b48a -> cf29cda76
fix intermittent failing ItemsInContainersGroupTest.testItemUnmanagedIsRemoved
by ensuring group removal is done first
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/cf29cda7
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/cf29cda7
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/cf29cda7
Branch: refs/heads/master
Commit: cf29cda76f98932062989ecde2073dcb7d5b9685
Parents: b6247b4
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Feb 8 10:42:42 2016 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Feb 8 10:43:24 2016 +0000
----------------------------------------------------------------------
.../entity/group/AbstractGroupImpl.java | 22 ++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cf29cda7/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java
index bfd366f..6b5c02a 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java
@@ -35,6 +35,7 @@ import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic;
import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
import org.apache.brooklyn.entity.stock.DelegateEntity;
import org.apache.brooklyn.util.collections.SetFromLiveMap;
+import org.apache.brooklyn.util.exceptions.Exceptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -175,7 +176,6 @@ public abstract class AbstractGroupImpl extends AbstractEntity implements Abstra
@Override
public boolean removeMember(final Entity member) {
synchronized (members) {
- member.removeGroup((Group)getProxyIfAvailable());
boolean changed = (member != null && members.remove(member));
if (changed) {
log.debug("Group {} lost member {}", this, member);
@@ -205,7 +205,25 @@ public abstract class AbstractGroupImpl extends AbstractEntity implements Abstra
}
}
- getManagementSupport().getEntityChangeListener().onMembersChanged();
+ }
+
+ Exception errorRemoving = null;
+ // suppress errors if member is being unmanaged in parallel
+ try {
+ member.removeGroup((Group)getProxyIfAvailable());
+ } catch (Exception e) {
+ Exceptions.propagateIfFatal(e);
+ errorRemoving = e;
+ }
+
+ getManagementSupport().getEntityChangeListener().onMembersChanged();
+
+ if (errorRemoving!=null) {
+ if (Entities.isNoLongerManaged(member)) {
+ log.debug("Ignoring error when telling group "+this+" unmanaged member "+member+" is is removed: "+errorRemoving);
+ } else {
+ Exceptions.propagate(errorRemoving);
+ }
}
return changed;