Skip to content

Commit ddfa1e6

Browse files
izeyesnicoll
authored andcommitted
Make MetricsClientHttpRequestInterceptor defensive against metrics recoding failures
See gh-24753
1 parent 5df4011 commit ddfa1e6

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/MetricsClientHttpRequestInterceptor.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
import io.micrometer.core.instrument.MeterRegistry;
2727
import io.micrometer.core.instrument.Timer;
28+
import org.apache.commons.logging.Log;
29+
import org.apache.commons.logging.LogFactory;
2830

2931
import org.springframework.boot.actuate.metrics.AutoTimer;
3032
import org.springframework.core.NamedThreadLocal;
@@ -43,6 +45,8 @@
4345
*/
4446
class MetricsClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
4547

48+
private static final Log logger = LogFactory.getLog(MetricsClientHttpRequestInterceptor.class);
49+
4650
private static final ThreadLocal<Deque<String>> urlTemplate = new UrlTemplateThreadLocal();
4751

4852
private final MeterRegistry meterRegistry;
@@ -82,8 +86,13 @@ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttp
8286
return response;
8387
}
8488
finally {
85-
getTimeBuilder(request, response).register(this.meterRegistry).record(System.nanoTime() - startTime,
86-
TimeUnit.NANOSECONDS);
89+
try {
90+
getTimeBuilder(request, response).register(this.meterRegistry).record(System.nanoTime() - startTime,
91+
TimeUnit.NANOSECONDS);
92+
}
93+
catch (Exception ex) {
94+
logger.info("Failed to record metrics.", ex);
95+
}
8796
if (urlTemplate.get().isEmpty()) {
8897
urlTemplate.remove();
8998
}

0 commit comments

Comments
 (0)