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 e280b1e9d22c..fabcbb322ac1 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. @@ -25,6 +25,8 @@ 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 @@ */ 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 @@ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttp 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(); }