[SCB-2596]retry add retryOnSame property
diff --git a/governance/src/main/java/org/apache/servicecomb/governance/policy/RetryPolicy.java b/governance/src/main/java/org/apache/servicecomb/governance/policy/RetryPolicy.java
index a4b786b..ce534ae 100644
--- a/governance/src/main/java/org/apache/servicecomb/governance/policy/RetryPolicy.java
+++ b/governance/src/main/java/org/apache/servicecomb/governance/policy/RetryPolicy.java
@@ -60,8 +60,13 @@
// randomization factor for backoff retry
private double randomizationFactor = RANDOMIZATION_FACTOR;
+ // if throw an MaxRetriesExceededException if retry condition is based on result
private boolean failAfterMaxAttempts = false;
+ // if retry on the same instance. This property is not directly used in
+ // RetryHandler, but used for loadbalancers
+ private int retryOnSame = 0;
+
public List<String> getRetryOnResponseStatus() {
if (CollectionUtils.isEmpty(retryOnResponseStatus)) {
this.retryOnResponseStatus.add(DEFAULT_RETRY_ON_RESPONSE_STATUS);
@@ -128,9 +133,16 @@
return failAfterMaxAttempts;
}
- public RetryPolicy setFailAfterMaxAttempts(boolean failAfterMaxAttempts) {
+ public void setFailAfterMaxAttempts(boolean failAfterMaxAttempts) {
this.failAfterMaxAttempts = failAfterMaxAttempts;
- return this;
+ }
+
+ public int getRetryOnSame() {
+ return retryOnSame;
+ }
+
+ public void setRetryOnSame(int retryOnSame) {
+ this.retryOnSame = retryOnSame;
}
@Override
diff --git a/governance/src/test/java/org/apache/servicecomb/governance/CircuitBreakerHandlerTest.java b/governance/src/test/java/org/apache/servicecomb/governance/RetryHandlerTest.java
similarity index 98%
rename from governance/src/test/java/org/apache/servicecomb/governance/CircuitBreakerHandlerTest.java
rename to governance/src/test/java/org/apache/servicecomb/governance/RetryHandlerTest.java
index 80c4e61..c33cfb6 100644
--- a/governance/src/test/java/org/apache/servicecomb/governance/CircuitBreakerHandlerTest.java
+++ b/governance/src/test/java/org/apache/servicecomb/governance/RetryHandlerTest.java
@@ -28,7 +28,7 @@
import io.github.resilience4j.retry.MaxRetriesExceededException;
import io.github.resilience4j.retry.Retry;
-public class CircuitBreakerHandlerTest {
+public class RetryHandlerTest {
@Test
public void testNotFailAfterMaxAttemptsWhenThrow() {
RetryExtension retryExtension = Mockito.mock(RetryExtension.class);