public StatusSummary run()

in src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/AbstractHealthCheck.java [63:102]


  public StatusSummary run() {
    StatusSummary checkStatusSummary;
    boolean enabled = config.healthCheckEnabled(name);
    final long ts = System.currentTimeMillis();
    ListenableFuture<StatusSummary> resultFuture =
        executor.submit(
            () -> {
              Result healthy;
              try {
                healthy = enabled ? doCheck() : Result.DISABLED;
              } catch (Exception e) {
                log.warn("Check {} failed", name, e);
                healthy = Result.FAILED;
              }
              Long elapsed = System.currentTimeMillis() - ts;
              StatusSummary statusSummary =
                  new StatusSummary(healthy, ts, elapsed, Collections.emptyMap());
              if (statusSummary.isFailure()) {
                failureCounterMetric.increment();
              }
              latencyMetric.record(elapsed, TimeUnit.MILLISECONDS);
              return statusSummary;
            });
    try {
      checkStatusSummary = resultFuture.get(timeout, TimeUnit.MILLISECONDS);
    } catch (TimeoutException e) {
      log.warn("Check {} timed out", name, e);
      Long elapsed = System.currentTimeMillis() - ts;
      checkStatusSummary = new StatusSummary(Result.TIMEOUT, ts, elapsed, Collections.emptyMap());
      failureCounterMetric.increment();
      latencyMetric.record(elapsed, TimeUnit.MILLISECONDS);
    } catch (InterruptedException | ExecutionException e) {
      log.warn("Check {} failed while waiting for its future result", name, e);
      Long elapsed = System.currentTimeMillis() - ts;
      checkStatusSummary = new StatusSummary(Result.FAILED, ts, elapsed, Collections.emptyMap());
      failureCounterMetric.increment();
      latencyMetric.record(elapsed, TimeUnit.MILLISECONDS);
    }
    return checkStatusSummary;
  }