From b34c268547cd7920273eed4d4620fd62a8af45a9 Mon Sep 17 00:00:00 2001 From: im47cn <67424112+im47cn@users.noreply.github.com> Date: Sun, 28 Jun 2020 10:41:10 +0800 Subject: [PATCH 1/2] Avoid NPE when binder is closed before started event Previously, if TomcatMetricsBinder destroy() was called before it had received an ApplicationStartedEvent an NPE would be thrown due to TomcatMetrics being null. This NPE was then caught and logged at warning level by the disposable bean adapter. This prevents the NPE by checking that the TomcatMetrics instance is null before calling close() on it. See gh-22141 --- .../boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java index 688692ff79c..1e065eb4607 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java @@ -86,7 +86,9 @@ public class TomcatMetricsBinder implements ApplicationListener Date: Tue, 30 Jun 2020 13:26:30 +0100 Subject: [PATCH 2/2] Polish "Avoid NPE when binder is closed before started event" See gh-22141 --- .../web/tomcat/TomcatMetricsBinder.java | 2 +- .../web/tomcat/TomcatMetricsBinderTests.java | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinderTests.java diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java index 1e065eb4607..38920b56c60 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/tomcat/TomcatMetricsBinder.java @@ -86,7 +86,7 @@ public class TomcatMetricsBinder implements ApplicationListener