fix: use setter of logger for RetryTemplate (#2545)

This commit is contained in:
Tobias Soloschenko
2024-10-24 01:38:02 +02:00
committed by GitHub
parent 73b63de1e1
commit 67771717d0
2 changed files with 8 additions and 22 deletions

View File

@@ -16,43 +16,23 @@
package org.springframework.cloud.config.client;
import java.lang.reflect.Field;
import org.apache.commons.logging.Log;
import org.springframework.retry.support.RetryTemplate;
import org.springframework.util.ReflectionUtils;
public final class RetryTemplateFactory {
private static final Field field;
static {
field = ReflectionUtils.findField(RetryTemplate.class, "logger");
if (field != null) {
ReflectionUtils.makeAccessible(field);
}
}
private RetryTemplateFactory() {
}
public static RetryTemplate create(RetryProperties properties, Log log) {
RetryTemplate retryTemplate = RetryTemplate.builder()
return RetryTemplate.builder()
.maxAttempts(properties.getMaxAttempts())
.exponentialBackoff(properties.getInitialInterval(), properties.getMultiplier(),
properties.getMaxInterval(), properties.isUseRandomPolicy())
.withLogger(log)
.build();
try {
field.set(retryTemplate, log);
}
catch (IllegalAccessException e) {
if (log.isErrorEnabled()) {
log.error("error setting retry log", e);
}
}
return retryTemplate;
}
}

View File

@@ -18,6 +18,7 @@
<jgit.version>6.6.1.202309021850-r</jgit.version>
<spring-vault.version>3.1.1</spring-vault.version>
<spring-credhub.version>2.1.1.RELEASE</spring-credhub.version>
<spring-retry.version>2.0.10</spring-retry.version>
</properties>
<dependencyManagement>
<dependencies>
@@ -41,6 +42,11 @@
<artifactId>spring-cloud-config-monitor</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>${spring-retry.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.vault</groupId>
<artifactId>spring-vault-core</artifactId>