You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2019/06/27 01:49:48 UTC
[servicecomb-java-chassis] branch master updated:
[SCB-1304]FallbackPolicy#getFallbackResponse add Throwable
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 6d728de [SCB-1304]FallbackPolicy#getFallbackResponse add Throwable
6d728de is described below
commit 6d728de6e2dd0bcdc22d33b5b384cfec1a9d49d1
Author: pengliang <pe...@huawei.com>
AuthorDate: Fri Jun 21 10:27:28 2019 +0800
[SCB-1304]FallbackPolicy#getFallbackResponse add Throwable
---
.../springmvc/client/MockedFallbackExample.java | 2 +-
.../servicecomb/bizkeeper/FallbackPolicy.java | 2 +-
.../bizkeeper/FallbackPolicyManager.java | 2 +-
.../bizkeeper/FromCacheFallbackPolicy.java | 2 +-
.../bizkeeper/ReturnNullFallbackPolicy.java | 2 +-
.../bizkeeper/ThrowExceptionFallbackPolicy.java | 4 +--
.../bizkeeper/TestBizkeeperHandler.java | 3 +-
.../bizkeeper/TestFallbackPolicyManager.java | 37 ++++++++++++++++++++++
8 files changed, 46 insertions(+), 8 deletions(-)
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/MockedFallbackExample.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/MockedFallbackExample.java
index 019f402..3533aed 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/MockedFallbackExample.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/MockedFallbackExample.java
@@ -30,7 +30,7 @@ public class MockedFallbackExample implements FallbackPolicy {
}
@Override
- public Response getFallbackResponse(Invocation invocation) {
+ public Response getFallbackResponse(Invocation invocation, Throwable error) {
return Response.succResp("mockedreslut");
}
}
diff --git a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FallbackPolicy.java b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FallbackPolicy.java
index 75b1eb4..c394a35 100644
--- a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FallbackPolicy.java
+++ b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FallbackPolicy.java
@@ -22,7 +22,7 @@ import org.apache.servicecomb.swagger.invocation.Response;
public interface FallbackPolicy {
String name();
- Response getFallbackResponse(Invocation invocation);
+ Response getFallbackResponse(Invocation invocation, Throwable error);
default void record(Invocation invocation, Response response, boolean isSuccess) {
diff --git a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FallbackPolicyManager.java b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FallbackPolicyManager.java
index 1382f0a..88f502a 100644
--- a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FallbackPolicyManager.java
+++ b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FallbackPolicyManager.java
@@ -39,7 +39,7 @@ public class FallbackPolicyManager {
public static Response getFallbackResponse(String type, Throwable error, Invocation invocation) {
FallbackPolicy policy = getPolicy(type, invocation);
if (policy != null) {
- return policy.getFallbackResponse(invocation);
+ return policy.getFallbackResponse(invocation, error);
} else {
return Response.failResp(invocation.getInvocationType(),
BizkeeperExceptionUtils
diff --git a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FromCacheFallbackPolicy.java b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FromCacheFallbackPolicy.java
index e992e19..2e6314b 100644
--- a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FromCacheFallbackPolicy.java
+++ b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/FromCacheFallbackPolicy.java
@@ -35,7 +35,7 @@ public class FromCacheFallbackPolicy implements FallbackPolicy {
}
@Override
- public Response getFallbackResponse(Invocation invocation) {
+ public Response getFallbackResponse(Invocation invocation, Throwable error) {
if (cachedResponse.get(invocation.getInvocationQualifiedName()) != null) {
return cachedResponse.get(invocation.getInvocationQualifiedName());
} else {
diff --git a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/ReturnNullFallbackPolicy.java b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/ReturnNullFallbackPolicy.java
index b4b0a5f..1b4d6e0 100644
--- a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/ReturnNullFallbackPolicy.java
+++ b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/ReturnNullFallbackPolicy.java
@@ -30,7 +30,7 @@ public class ReturnNullFallbackPolicy implements FallbackPolicy {
}
@Override
- public Response getFallbackResponse(Invocation invocation) {
+ public Response getFallbackResponse(Invocation invocation, Throwable error) {
return Response.succResp(null);
}
}
diff --git a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/ThrowExceptionFallbackPolicy.java b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/ThrowExceptionFallbackPolicy.java
index 1376510..1c74e4a 100644
--- a/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/ThrowExceptionFallbackPolicy.java
+++ b/handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/ThrowExceptionFallbackPolicy.java
@@ -30,11 +30,11 @@ public class ThrowExceptionFallbackPolicy implements FallbackPolicy {
}
@Override
- public Response getFallbackResponse(Invocation invocation) {
+ public Response getFallbackResponse(Invocation invocation, Throwable error) {
return Response.failResp(invocation.getInvocationType(),
BizkeeperExceptionUtils
.createBizkeeperException(BizkeeperExceptionUtils.SERVICECOMB_BIZKEEPER_FALLBACK,
- null,
+ error,
invocation.getOperationMeta().getMicroserviceQualifiedName()));
}
}
diff --git a/handlers/handler-bizkeeper/src/test/java/org/apache/servicecomb/bizkeeper/TestBizkeeperHandler.java b/handlers/handler-bizkeeper/src/test/java/org/apache/servicecomb/bizkeeper/TestBizkeeperHandler.java
index 9d049cb..cb4656c 100644
--- a/handlers/handler-bizkeeper/src/test/java/org/apache/servicecomb/bizkeeper/TestBizkeeperHandler.java
+++ b/handlers/handler-bizkeeper/src/test/java/org/apache/servicecomb/bizkeeper/TestBizkeeperHandler.java
@@ -159,7 +159,8 @@ public class TestBizkeeperHandler extends BizkeeperHandler {
.thenReturn("testHandleInError");
FallbackPolicy policy = Mockito.mock(FallbackPolicy.class);
Mockito.when(policy.name()).thenReturn("throwException");
- Mockito.when(policy.getFallbackResponse(Mockito.any(Invocation.class))).thenThrow(new RuntimeException());
+ Mockito.when(policy.getFallbackResponse(Mockito.any(Invocation.class), Mockito.any(null)))
+ .thenThrow(new RuntimeException());
FallbackPolicyManager.addPolicy(policy);
System.setProperty("servicecomb.fallbackpolicy.groupname.testHandleInError.policy", "throwException");
Mockito.doAnswer(new Answer<Void>() {
diff --git a/handlers/handler-bizkeeper/src/test/java/org/apache/servicecomb/bizkeeper/TestFallbackPolicyManager.java b/handlers/handler-bizkeeper/src/test/java/org/apache/servicecomb/bizkeeper/TestFallbackPolicyManager.java
index b254599..4860146 100644
--- a/handlers/handler-bizkeeper/src/test/java/org/apache/servicecomb/bizkeeper/TestFallbackPolicyManager.java
+++ b/handlers/handler-bizkeeper/src/test/java/org/apache/servicecomb/bizkeeper/TestFallbackPolicyManager.java
@@ -20,6 +20,7 @@ import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.exception.CseException;
import org.apache.servicecomb.swagger.invocation.Response;
+import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
import org.junit.Assert;
import org.junit.Test;
@@ -33,6 +34,42 @@ public class TestFallbackPolicyManager {
FallbackPolicyManager.addPolicy(new ReturnNullFallbackPolicy());
FallbackPolicyManager.addPolicy(new ThrowExceptionFallbackPolicy());
FallbackPolicyManager.addPolicy(new FromCacheFallbackPolicy());
+ FallbackPolicyManager.addPolicy(new FallbackPolicy() {
+ private static final String CUSTOM = "custom";
+
+ @Override
+ public String name() {
+ return CUSTOM;
+ }
+
+ @Override
+ public Response getFallbackResponse(Invocation invocation, Throwable error) {
+ if (error instanceof InvocationException) {
+ return Response.succResp("test");
+ }
+ if (error instanceof RuntimeException) {
+ return Response.succResp("runtime");
+ }
+ return null;
+ }
+ });
+
+ new Expectations() {
+ {
+ invocation.getMicroserviceName();
+ result = "testservice";
+ invocation.getOperationMeta();
+ result = operation;
+ operation.getMicroserviceQualifiedName();
+ result = "testservice.schema.custom";
+ config.getFallbackPolicyPolicy("Consumer", "testservice", "testservice.schema.custom");
+ result = "custom";
+ }
+ };
+
+ Assert.assertEquals("runtime",
+ FallbackPolicyManager.getFallbackResponse("Consumer", new RuntimeException(), invocation)
+ .getResult());
new Expectations() {
{