From 44d7b4919be92caaeb556c75b3fd82e1b1aeb21b Mon Sep 17 00:00:00 2001 From: Daniel Albuquerque Date: Wed, 13 Jan 2021 11:52:22 +0000 Subject: [PATCH 1/2] Add support for retries --- spring-vault-core/pom.xml | 6 ++++++ .../vault/core/VaultTemplate.java | 19 ++++++++++++++++++- spring-vault-dependencies/pom.xml | 10 ++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/spring-vault-core/pom.xml b/spring-vault-core/pom.xml index a37213556..ba80a61a0 100644 --- a/spring-vault-core/pom.xml +++ b/spring-vault-core/pom.xml @@ -207,6 +207,12 @@ true + + org.springframework.retry + spring-retry + true + + diff --git a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTemplate.java b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTemplate.java index d17757339..41c3e3d8b 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTemplate.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTemplate.java @@ -28,6 +28,7 @@ import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.lang.Nullable; +import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.vault.authentication.ClientAuthentication; import org.springframework.vault.authentication.SessionManager; @@ -58,6 +59,9 @@ public class VaultTemplate implements InitializingBean, VaultOperations, Disposa private final RestTemplate sessionTemplate; + @Nullable + private RetryTemplate retryTemplate; + @Nullable private SessionManager sessionManager; @@ -267,6 +271,17 @@ public void setSessionManager(SessionManager sessionManager) { this.sessionManager = sessionManager; } + /** + * Set the {@link RetryTemplate}. + * @param retryTemplate must not be {@literal null}. + */ + public void setRetryTemplate(RetryTemplate retryTemplate) { + + Assert.notNull(retryTemplate, "RetryTemplate must not be null"); + + this.retryTemplate = retryTemplate; + } + @Override public void afterPropertiesSet() { Assert.notNull(this.sessionManager, "SessionManager must not be null"); @@ -445,7 +460,9 @@ public T doWithSession(RestOperationsCallback sessionCallback) { Assert.notNull(sessionCallback, "Session callback must not be null"); try { - return sessionCallback.doWithRestOperations(this.sessionTemplate); + return retryTemplate != null + ? retryTemplate.execute(retryContext -> sessionCallback.doWithRestOperations(this.sessionTemplate)) + : sessionCallback.doWithRestOperations(this.sessionTemplate); } catch (HttpStatusCodeException e) { throw VaultResponses.buildException(e); diff --git a/spring-vault-dependencies/pom.xml b/spring-vault-dependencies/pom.xml index 583e7e4c7..c192c8a1e 100644 --- a/spring-vault-dependencies/pom.xml +++ b/spring-vault-dependencies/pom.xml @@ -67,6 +67,7 @@ v1-rev20201112-1.31.0 0.22.2 1.67 + 1.3.0.RELEASE @@ -160,6 +161,15 @@ true + + + + org.springframework.retry + spring-retry + ${spring-retry.version} + true + + From 15df5f236bf5b079c9f5e8c4777f9a7576179e4a Mon Sep 17 00:00:00 2001 From: Daniel Albuquerque Date: Wed, 13 Jan 2021 13:16:59 +0000 Subject: [PATCH 2/2] Add support for retries (oops. using correct spring retry version) --- spring-vault-dependencies/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-vault-dependencies/pom.xml b/spring-vault-dependencies/pom.xml index c192c8a1e..c8d570634 100644 --- a/spring-vault-dependencies/pom.xml +++ b/spring-vault-dependencies/pom.xml @@ -67,7 +67,7 @@ v1-rev20201112-1.31.0 0.22.2 1.67 - 1.3.0.RELEASE + 1.3.0