AbstractHealthCheck: extract error handling to a method
since the error handling for TimeoutExceptions and other handled
exceptions is quite similar. So by extracting this into a method we can
avoid some code duplication.
Change-Id: I0974e2c341624049bb8c6f37933789ab2f3957b6
diff --git a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/AbstractHealthCheck.java b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/AbstractHealthCheck.java
index 5a8246b..db0657e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/AbstractHealthCheck.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/AbstractHealthCheck.java
@@ -87,20 +87,28 @@
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);
+ checkStatusSummary =
+ handleError(ts, e, String.format("Check %s timed out", name), Result.TIMEOUT);
} 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);
+ checkStatusSummary =
+ handleError(
+ ts,
+ e,
+ String.format("Check %s failed while waiting for its future result", name),
+ Result.FAILED);
}
return checkStatusSummary;
}
+ private StatusSummary handleError(long ts, Exception e, String message, Result result) {
+ log.warn(message, e);
+ Long elapsed = System.currentTimeMillis() - ts;
+ StatusSummary checkStatusSummary =
+ new StatusSummary(result, ts, elapsed, Collections.emptyMap());
+ failureCounterMetric.increment();
+ latencyMetric.record(elapsed, TimeUnit.MILLISECONDS);
+ return checkStatusSummary;
+ }
+
protected abstract Result doCheck() throws Exception;
}