From 2731adac2ab57abb52027701393af03ae8422ebf Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 23 Sep 2021 18:46:48 +0200 Subject: Drain the input stream on error, an just return an HealthMetric.getUnknown. --- .../main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java | 2 +- .../ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java | 7 +++---- .../java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java | 3 ++- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'metrics-proxy/src') diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java index b4c116d1903..117503b95dc 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java @@ -32,7 +32,7 @@ import java.util.logging.Logger; */ public abstract class HttpMetricFetcher { - private final static Logger log = Logger.getLogger(HttpMetricFetcher.class.getPackage().getName()); + private final static Logger log = Logger.getLogger(HttpMetricFetcher.class.getName()); public final static String STATE_PATH = "/state/v1/"; // The call to apache will do 3 retries. As long as we check the services in series, we can't have this too high. public static int CONNECTION_TIMEOUT = 5000; diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java index 59db14670aa..03e72ec36de 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java @@ -5,7 +5,6 @@ import ai.vespa.metricsproxy.metric.HealthMetric; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.concurrent.ExecutionException; import java.util.logging.Level; @@ -36,19 +35,19 @@ public class RemoteHealthMetricFetcher extends HttpMetricFetcher { return createHealthMetrics(stream, fetchCount); } catch (IOException | InterruptedException | ExecutionException e) { logMessageNoResponse(errMsgNoResponse(e), fetchCount); - byte [] empty = {'{','}'}; - return createHealthMetrics(new ByteArrayInputStream(empty), fetchCount); + return HealthMetric.getUnknown("Failed fetching metrics for service: " + service.getMonitoringName()); } } /** * Connect to remote service over http and fetch metrics */ - private HealthMetric createHealthMetrics(InputStream data, int fetchCount) { + private HealthMetric createHealthMetrics(InputStream data, int fetchCount) throws IOException { try { return parse(data); } catch (Exception e) { handleException(e, data, fetchCount); + while (data.read() != -1) {} return HealthMetric.getDown("Failed fetching status page for service"); } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java index 3ee1e05c263..aad2f816959 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java @@ -35,11 +35,12 @@ public class RemoteMetricsFetcher extends HttpMetricFetcher { handleException(e, data, fetchCount); } } - private void createMetrics(InputStream data, MetricsParser.Consumer consumer, int fetchCount) { + private void createMetrics(InputStream data, MetricsParser.Consumer consumer, int fetchCount) throws IOException { try { MetricsParser.parse(data, consumer); } catch (Exception e) { handleException(e, data, fetchCount); + while (data.read() != -1) {} } } } -- cgit v1.2.3