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();
     }
 

Reply via email to