All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.SingularityDropwizardHealthcheck Maven / Gradle / Ivy

package com.hubspot.singularity;

import static com.google.common.base.Preconditions.checkNotNull;

import com.codahale.metrics.health.HealthCheck;
import com.hubspot.singularity.mesos.SingularityMesosScheduler;
import javax.inject.Inject;
import org.apache.curator.framework.recipes.leader.LeaderLatch;

public class SingularityDropwizardHealthcheck extends HealthCheck {
  private final SingularityMesosScheduler mesosScheduler;
  private final LeaderLatch leaderLatch;

  @Inject
  public SingularityDropwizardHealthcheck(
    final SingularityMesosScheduler mesosScheduler,
    final LeaderLatch leaderLatch
  ) {
    this.mesosScheduler = checkNotNull(mesosScheduler, "mesosScheduler is null");
    this.leaderLatch = checkNotNull(leaderLatch, "leaderLatch is null");
  }

  @Override
  protected Result check() throws Exception {
    if (leaderLatch.hasLeadership()) {
      return mesosScheduler.isRunning()
        ? Result.healthy("Leading and scheduler is running.")
        : Result.unhealthy("Leading, but scheduler is not running!");
    } else {
      return mesosScheduler.isRunning()
        ? Result.unhealthy("Not leading, but scheduler is running!")
        : Result.healthy("Not leading.");
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy