package com.hubspot.baragon.service.healthcheck; import java.util.concurrent.atomic.AtomicReference; import org.apache.curator.framework.state.ConnectionState; import com.codahale.metrics.health.HealthCheck; import com.google.inject.Inject; import com.google.inject.Singleton; import com.google.inject.name.Named; import com.hubspot.baragon.BaragonDataModule; @Singleton public class ZooKeeperHealthcheck extends HealthCheck { private final AtomicReference<ConnectionState> connectionState; @Inject public ZooKeeperHealthcheck(@Named(BaragonDataModule.BARAGON_ZK_CONNECTION_STATE) AtomicReference<ConnectionState> connectionState) { this.connectionState = connectionState; } @Override protected Result check() throws Exception { final ConnectionState currentConnectionState = connectionState.get(); if (currentConnectionState == null) { return Result.unhealthy("Connection state is null"); } switch (currentConnectionState) { case CONNECTED: case RECONNECTED: return Result.healthy(currentConnectionState.name()); default: return Result.unhealthy(currentConnectionState.name()); } } }