Address PR comments
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/4ce06368 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/4ce06368 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/4ce06368 Branch: refs/heads/master Commit: 4ce0636890098fb3195f2719597ae296c341d44c Parents: 8cfe58e Author: Mike Zaccardo <[email protected]> Authored: Tue Aug 4 11:52:01 2015 -0400 Committer: Mike Zaccardo <[email protected]> Committed: Tue Aug 4 11:52:01 2015 -0400 ---------------------------------------------------------------------- .../entity/nosql/redis/RedisClusterImpl.java | 29 ++++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4ce06368/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java index e46ce65..89ca43c 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java @@ -21,21 +21,22 @@ package brooklyn.entity.nosql.redis; import java.util.Collection; import brooklyn.enricher.Enrichers; -import brooklyn.entity.Entity; import brooklyn.entity.basic.AbstractEntity; import brooklyn.entity.basic.Lifecycle; import brooklyn.entity.basic.ServiceStateLogic; +import brooklyn.entity.basic.ServiceStateLogic.ComputeServiceIndicatorsFromChildrenAndMembers; import brooklyn.entity.basic.ServiceStateLogic.ServiceProblemsLogic; import brooklyn.entity.group.DynamicCluster; import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; import brooklyn.event.AttributeSensor; import brooklyn.event.basic.Sensors; import brooklyn.location.Location; +import brooklyn.util.collections.QuorumCheck.QuorumChecks; import brooklyn.util.exceptions.Exceptions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; public class RedisClusterImpl extends AbstractEntity implements RedisCluster { @@ -55,6 +56,7 @@ public class RedisClusterImpl extends AbstractEntity implements RedisCluster { return getAttribute(SLAVES); } + @Override public void init() { super.init(); @@ -70,6 +72,16 @@ public class RedisClusterImpl extends AbstractEntity implements RedisCluster { .from(master) .build()); } + + @Override + protected void initEnrichers() { + super.initEnrichers(); + ServiceStateLogic.newEnricherFromChildrenUp(). + checkChildrenOnly(). + requireUpChildren(QuorumChecks.all()). + configure(ComputeServiceIndicatorsFromChildrenAndMembers.IGNORE_ENTITIES_WITH_THESE_SERVICE_STATES, ImmutableSet.<Lifecycle>of()). + addTo(this); + } @Override public void start(Collection<? extends Location> locations) { @@ -82,8 +94,6 @@ public class RedisClusterImpl extends AbstractEntity implements RedisCluster { ServiceProblemsLogic.updateProblemsIndicator(this, START, "Start failed with error: "+e); ServiceStateLogic.setExpectedState(this, Lifecycle.ON_FIRE); throw Exceptions.propagate(e); - } finally { - setAttribute(Startable.SERVICE_UP, calculateServiceUp()); } } @@ -105,8 +115,6 @@ public class RedisClusterImpl extends AbstractEntity implements RedisCluster { ServiceProblemsLogic.updateProblemsIndicator(this, STOP, "Stop failed with error: "+e); ServiceStateLogic.setExpectedState(this, Lifecycle.ON_FIRE); throw Exceptions.propagate(e); - } finally { - setAttribute(Startable.SERVICE_UP, calculateServiceUp()); } } @@ -119,13 +127,4 @@ public class RedisClusterImpl extends AbstractEntity implements RedisCluster { public void restart() { throw new UnsupportedOperationException(); } - - private boolean calculateServiceUp() { - if (!Boolean.TRUE.equals(getMaster().getAttribute(SERVICE_UP))) return false; - - for (Entity member : getSlaves().getMembers()) - if (!Boolean.TRUE.equals(member.getAttribute(SERVICE_UP))) return false; - - return true; - } }
