From ddfa1e632bbcadff85794afd8044878f1a11ae22 Mon Sep 17 00:00:00 2001 From: izeye Date: Tue, 12 Jan 2021 12:36:14 +0900 Subject: [PATCH 1/2] Make MetricsClientHttpRequestInterceptor defensive against metrics recoding failures See gh-24753 --- .../client/MetricsClientHttpRequestInterceptor.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java index e280b1e9d2..20a880e0a1 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java @@ -25,6 +25,8 @@ import java.util.concurrent.TimeUnit; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Timer; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.boot.actuate.metrics.AutoTimer; import org.springframework.core.NamedThreadLocal; @@ -43,6 +45,8 @@ import org.springframework.web.util.UriTemplateHandler; */ class MetricsClientHttpRequestInterceptor implements ClientHttpRequestInterceptor { + private static final Log logger = LogFactory.getLog(MetricsClientHttpRequestInterceptor.class); + private static final ThreadLocal> urlTemplate = new UrlTemplateThreadLocal(); private final MeterRegistry meterRegistry; @@ -82,8 +86,13 @@ class MetricsClientHttpRequestInterceptor implements ClientHttpRequestIntercepto return response; } finally { - getTimeBuilder(request, response).register(this.meterRegistry).record(System.nanoTime() - startTime, - TimeUnit.NANOSECONDS); + try { + getTimeBuilder(request, response).register(this.meterRegistry).record(System.nanoTime() - startTime, + TimeUnit.NANOSECONDS); + } + catch (Exception ex) { + logger.info("Failed to record metrics.", ex); + } if (urlTemplate.get().isEmpty()) { urlTemplate.remove(); } From 1ad5a3fe2e851821da353a28bbdb93cc361f2d72 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 18 Jan 2021 17:01:31 +0100 Subject: [PATCH 2/2] Update copyright of changed file See gh-24753 --- .../metrics/web/client/MetricsClientHttpRequestInterceptor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java index 20a880e0a1..fabcbb322a 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.