Merge remote-tracking branch 'origin/3.1.x'
This commit is contained in:
@@ -67,6 +67,7 @@ import static org.springframework.cloud.openfeign.loadbalancer.LoadBalancerUtils
|
||||
*
|
||||
* @author Olga Maciaszek-Sharma
|
||||
* @author changjin wei(魏昌进)
|
||||
* @author Wonsik Cheung
|
||||
* @since 2.2.6
|
||||
*/
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
@@ -184,6 +185,7 @@ public class RetryableFeignBlockingLoadBalancerClient implements Client {
|
||||
}
|
||||
org.springframework.cloud.client.loadbalancer.Response<ServiceInstance> lbResponse = new DefaultResponse(
|
||||
retrievedServiceInstance);
|
||||
LoadBalancerProperties loadBalancerProperties = loadBalancerClientFactory.getProperties(serviceId);
|
||||
Response response = LoadBalancerUtils.executeWithLoadBalancerLifecycleProcessing(delegate, options,
|
||||
feignRequest, lbRequest, lbResponse, supportedLifecycleProcessors,
|
||||
retrievedServiceInstance != null);
|
||||
@@ -231,8 +233,10 @@ public class RetryableFeignBlockingLoadBalancerClient implements Client {
|
||||
retryTemplate.setListeners(retryListeners);
|
||||
}
|
||||
|
||||
retryTemplate.setRetryPolicy(retryPolicy == null ? new NeverRetryPolicy()
|
||||
: new InterceptorRetryPolicy(toHttpRequest(request), retryPolicy, loadBalancerClient, serviceId));
|
||||
retryTemplate.setRetryPolicy(
|
||||
!loadBalancerClientFactory.getProperties(serviceId).getRetry().isEnabled() || retryPolicy == null
|
||||
? new NeverRetryPolicy() : new InterceptorRetryPolicy(toHttpRequest(request), retryPolicy,
|
||||
loadBalancerClient, serviceId));
|
||||
return retryTemplate;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
@@ -73,6 +74,7 @@ import static org.mockito.Mockito.when;
|
||||
*
|
||||
* @author Olga Maciaszek-Sharma
|
||||
* @author changjin wei(魏昌进)
|
||||
* @author Wonsik Cheung
|
||||
* @see <a href=
|
||||
* "https://github.com/spring-cloud/spring-cloud-commons/blob/main/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/blocking/client/BlockingLoadBalancerClientTests.java">BlockingLoadBalancerClientTests</a>
|
||||
*/
|
||||
@@ -166,6 +168,20 @@ class RetryableFeignBlockingLoadBalancerClientTests {
|
||||
verify(delegate, times(2)).execute(any(), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotRetryOnDisabled() throws IOException {
|
||||
properties.getRetry().setEnabled(false);
|
||||
Request request = testRequest();
|
||||
when(delegate.execute(any(), any())).thenThrow(new IOException());
|
||||
when(retryFactory.createRetryPolicy(any(), eq(loadBalancerClient)))
|
||||
.thenReturn(new BlockingLoadBalancedRetryPolicy(properties));
|
||||
|
||||
assertThatThrownBy(() -> feignBlockingLoadBalancerClient.execute(request, new Request.Options()))
|
||||
.isInstanceOf(IOException.class);
|
||||
|
||||
verify(delegate, times(1)).execute(any(), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExposeResponseBodyOnRetry() throws IOException {
|
||||
properties.getRetry().getRetryableStatusCodes().add(503);
|
||||
|
||||
@@ -37,8 +37,7 @@ import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* Tests for
|
||||
* {@link XForwardedHeadersTransformer}.
|
||||
* Tests for {@link XForwardedHeadersTransformer}.
|
||||
*
|
||||
* @author changjin wei(魏昌进)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user