@Override protected void initEnrichers() { if (config().getRaw(UP_QUORUM_CHECK).isAbsent() && Preconditions.checkNotNull(getConfig(INITIAL_SIZE), "Cluster initial size overridden to be null. Must be set explicitly.")==0) { // if initial size is 0 then override up check to allow zero if empty config().set(UP_QUORUM_CHECK, QuorumChecks.atLeastOneUnlessEmpty()); sensors().set(ServiceStateLogic.SERVICE_NOT_UP_INDICATORS, MutableMap.<String, Object>of()); sensors().set(SERVICE_UP, true); } else { sensors().set(SERVICE_UP, false); } super.initEnrichers(); // override previous enricher so that only members are checked ServiceStateLogic.newEnricherFromChildrenUp().checkMembersOnly().requireUpChildren(getConfig(UP_QUORUM_CHECK)).addTo(this); }
.suppressDuplicates(true) .configure(ComputeServiceIndicatorsFromChildrenAndMembers.RUNNING_QUORUM_CHECK, QuorumCheck.QuorumChecks.all())); if (Boolean.TRUE.equals(propagate)) { if (sensors.isEmpty()) {
.suppressDuplicates(true) .configure(ComputeServiceIndicatorsFromChildrenAndMembers.RUNNING_QUORUM_CHECK, QuorumCheck.QuorumChecks.all())); if (Boolean.TRUE.equals(propagate)) { if (sensors.isEmpty()) {
@Override protected void initEnrichers() { super.initEnrichers(); // check states and upness separately so they can be individually replaced if desired // problem if any children or members are on fire enrichers().add(ServiceStateLogic.newEnricherFromChildrenState() .checkChildrenAndMembers() .requireRunningChildren(getConfig(RUNNING_QUORUM_CHECK)) .suppressDuplicates(true)); // defaults to requiring at least one member or child who is up enrichers().add(ServiceStateLogic.newEnricherFromChildrenUp() .checkChildrenAndMembers() .requireUpChildren(getConfig(UP_QUORUM_CHECK)) .suppressDuplicates(true)); }
@Override protected void initEnrichers() { super.initEnrichers(); // check states and upness separately so they can be individually replaced if desired // problem if any children or members are on fire enrichers().add(ServiceStateLogic.newEnricherFromChildrenState() .checkChildrenOnly() .requireRunningChildren(getConfig(RUNNING_QUORUM_CHECK)) .suppressDuplicates(true)); // defaults to requiring at least one member or child who is up enrichers().add(ServiceStateLogic.newEnricherFromChildrenUp() .checkChildrenOnly() .requireUpChildren(getConfig(UP_QUORUM_CHECK)) .suppressDuplicates(true)); }
public ComputeServiceIndicatorsFromChildrenAndMembersSpec checkMembersOnly() { configure(ComputeServiceIndicatorsFromChildrenAndMembers.FROM_MEMBERS, true); configure(ComputeServiceIndicatorsFromChildrenAndMembers.FROM_CHILDREN, false); return self(); } public ComputeServiceIndicatorsFromChildrenAndMembersSpec checkChildrenOnly() {
public ComputeServiceIndicatorsFromChildrenAndMembersSpec checkChildrenAndMembers() { configure(ComputeServiceIndicatorsFromChildrenAndMembers.FROM_MEMBERS, true); configure(ComputeServiceIndicatorsFromChildrenAndMembers.FROM_CHILDREN, true); return self(); } public ComputeServiceIndicatorsFromChildrenAndMembersSpec checkMembersOnly() {
/** as {@link #newEnricherFromChildren()} but only publishing service problems, * listening to children and members, ignoring service up, * and using the same logic * (viz looking at children and members and requiring none are on fire) by default */ public static ComputeServiceIndicatorsFromChildrenAndMembersSpec newEnricherFromChildrenState() { return newEnricherFromChildren() .configure(ComputeServiceIndicatorsFromChildrenAndMembers.DERIVE_SERVICE_NOT_UP, false); }
@Override protected void initEnrichers() { super.initEnrichers(); // all children must be up, for ourselves to be up enrichers().add(ServiceStateLogic.newEnricherFromChildrenUp() .checkChildrenOnly() .requireUpChildren(QuorumCheck.QuorumChecks.all())); }
/** provides the default {@link ComputeServiceIndicatorsFromChildrenAndMembers} enricher, * using the default unique tag ({@link ComputeServiceIndicatorsFromChildrenAndMembers#DEFAULT_UNIQUE_TAG}), * configured here to require none on fire, and either no children or at least one up child, * the spec can be further configured as appropriate */ public static ComputeServiceIndicatorsFromChildrenAndMembersSpec newEnricherFromChildren() { return new ComputeServiceIndicatorsFromChildrenAndMembersSpec() .uniqueTag(ComputeServiceIndicatorsFromChildrenAndMembers.DEFAULT_UNIQUE_TAG); }
@Override protected void initEnrichers() { super.initEnrichers(); // Because can have multiple children (similar to groups/clusters/apps), need to // monitor their health and indicate this has failed if any of them have failed. enrichers().add(ServiceStateLogic.newEnricherFromChildren() .suppressDuplicates(true) .configure(ComputeServiceIndicatorsFromChildrenAndMembers.UP_QUORUM_CHECK, QuorumCheck.QuorumChecks.all())); }
/** as {@link #newEnricherFromChildren()} but only publishing service not-up indicators, * using a different unique tag ({@link ComputeServiceIndicatorsFromChildrenAndMembers#DEFAULT_UNIQUE_TAG_UP}), * listening to children only, ignoring lifecycle/service-state, * and using the same logic * (viz looking only at children (not members) and requiring either no children or at least one child up) by default */ public static ComputeServiceIndicatorsFromChildrenAndMembersSpec newEnricherFromChildrenUp() { return newEnricherFromChildren() .uniqueTag(ComputeServiceIndicatorsFromChildrenAndMembers.DEFAULT_UNIQUE_TAG_UP) .checkChildrenOnly() .configure(ComputeServiceIndicatorsFromChildrenAndMembers.DERIVE_SERVICE_PROBLEMS, false); }
@Override protected void initEnrichers() { super.initEnrichers(); enrichers().add(ServiceStateLogic.newEnricherFromChildrenUp() .checkChildrenOnly() .requireUpChildren(QuorumCheck.QuorumChecks.all()) .suppressDuplicates(true)); }
@Override protected void initEnrichers() { if (config().getLocalRaw(UP_QUORUM_CHECK).isAbsent()) { config().set(UP_QUORUM_CHECK, QuorumChecks.newInstance(2, 1.0, false)); } super.initEnrichers(); ServiceStateLogic.newEnricherFromChildrenUp().checkChildrenOnly().requireUpChildren(getConfig(UP_QUORUM_CHECK)).addTo(this); }
/** as {@link AbstractEntity#initEnrichers()} but also adding default service not-up and problem indicators from children */ @Override protected void initEnrichers() { super.initEnrichers(); // default app logic; easily overridable by adding a different enricher with the same tag ServiceStateLogic.newEnricherFromChildren().checkChildrenAndMembers() .configure(ServiceStateLogic.ComputeServiceIndicatorsFromChildrenAndMembers.UP_QUORUM_CHECK, config().get(UP_QUORUM_CHECK)) .configure(ServiceStateLogic.ComputeServiceIndicatorsFromChildrenAndMembers.RUNNING_QUORUM_CHECK, config().get(RUNNING_QUORUM_CHECK)) .addTo(this); ServiceStateLogic.ServiceNotUpLogic.updateNotUpIndicator(this, Attributes.SERVICE_STATE_ACTUAL, "Application created but not yet started, at "+Time.makeDateString()); }