This is an automated email from the ASF dual-hosted git repository. penghui pushed a commit to branch branch-2.7 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 583da04db5797efdc7b9e7b4d65af5cd455a1794 Author: feynmanlin <[email protected]> AuthorDate: Wed Feb 10 08:14:32 2021 +0800 Fix reading metrics will always get stuck in some cases (#9538) (cherry picked from commit 456a19cc82997b45ea2689d62ea39708d124bbc1) --- .../pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java | 2 +- .../org/apache/pulsar/functions/runtime/thread/ThreadRuntime.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java index 7fbfb75..2986f5f 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java @@ -74,7 +74,7 @@ public class PrometheusMetricsServlet extends HttpServlet { res.getOutputStream(), metricsProviders); context.complete(); - } catch (IOException e) { + } catch (Exception e) { log.error("Failed to generate prometheus stats", e); res.setStatus(HttpStatus.INTERNAL_SERVER_ERROR_500); context.complete(); diff --git a/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/thread/ThreadRuntime.java b/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/thread/ThreadRuntime.java index d053b20..d9bbd7b 100644 --- a/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/thread/ThreadRuntime.java +++ b/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/thread/ThreadRuntime.java @@ -25,6 +25,7 @@ import java.util.concurrent.CompletableFuture; import io.prometheus.client.CollectorRegistry; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.functions.instance.InstanceConfig; import org.apache.pulsar.functions.proto.Function; @@ -174,6 +175,9 @@ public class ThreadRuntime implements Runtime { @Override public String getPrometheusMetrics() throws IOException { + if (javaInstanceRunnable == null) { + throw new PulsarServerException("javaInstanceRunnable is not initialized"); + } return javaInstanceRunnable.getStatsAsString(); }
