[ 
https://issues.apache.org/jira/browse/SCB-653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16507624#comment-16507624
 ] 

ASF GitHub Bot commented on SCB-653:
------------------------------------

liubao68 closed pull request #759: [SCB-653]Transfer-Encoding and 
Content-Length can not be set to response
URL: https://github.com/apache/incubator-servicecomb-java-chassis/pull/759
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/AbstractRestInvocation.java
 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/AbstractRestInvocation.java
index 9a3769b88..81e6fc925 100644
--- 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/AbstractRestInvocation.java
+++ 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/AbstractRestInvocation.java
@@ -205,7 +205,8 @@ protected void sendResponse(Response response) {
     if (response.getHeaders().getHeaderMap() != null) {
       for (Entry<String, List<Object>> entry : 
response.getHeaders().getHeaderMap().entrySet()) {
         for (Object value : entry.getValue()) {
-          if (!entry.getKey().equalsIgnoreCase(HttpHeaders.CONTENT_LENGTH)) {
+          if (!entry.getKey().equalsIgnoreCase(HttpHeaders.CONTENT_LENGTH)
+              && !entry.getKey().equalsIgnoreCase("Transfer-Encoding")) {
             responseEx.addHeader(entry.getKey(), String.valueOf(value));
           }
         }
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java
index 57eda6831..1ecf7f554 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java
@@ -183,9 +183,12 @@ private static void testValidatorAddFail(RestTemplate 
template, String cseUrlPre
       isExcep = true;
       TestMgr.check(400, e.getStatus().getStatusCode());
       TestMgr.check(Status.BAD_REQUEST, e.getReasonPhrase());
+      // Message dependends on locale, so just check the short part.
+      // 'must be greater than or equal to 20', propertyPath=add.arg1, 
rootBeanClass=class org.apache.servicecomb.demo.jaxrs.server.Validator, 
messageTemplate='{javax.validation.constraints.Min.message}'}]]
+      // ignored
       TestMgr.check(
-          "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage='must be greater than or 
equal to 20', propertyPath=add.arg1, rootBeanClass=class 
org.apache.servicecomb.demo.jaxrs.server.Validator, 
messageTemplate='{javax.validation.constraints.Min.message}'}]]",
-          e.getErrorData());
+          "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage=",
+          e.getErrorData().toString().substring(0, "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage=".length()));
     }
 
     TestMgr.check(true, isExcep);
@@ -207,9 +210,10 @@ private static void testValidatorSayHiFail(RestTemplate 
template, String cseUrlP
       isExcep = true;
       TestMgr.check(400, e.getStatus().getStatusCode());
       TestMgr.check(Status.BAD_REQUEST, e.getReasonPhrase());
+      // Message dependends on locale, so just check the short part.
       TestMgr.check(
-          "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage='length must be between 3 
and 2147483647', propertyPath=sayHi.arg0, rootBeanClass=class 
org.apache.servicecomb.demo.jaxrs.server.Validator, 
messageTemplate='{org.hibernate.validator.constraints.Length.message}'}]]",
-          e.getErrorData());
+          "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage=",
+          e.getErrorData().toString().substring(0, "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage=".length()));
     }
     TestMgr.check(true, isExcep);
   }
@@ -238,9 +242,10 @@ private static void testValidatorExchangeFail(RestTemplate 
template, String cseU
       isExcep = true;
       TestMgr.check(400, e.getStatus().getStatusCode());
       TestMgr.check(Status.BAD_REQUEST, e.getReasonPhrase());
+      // Message dependends on locale, so just check the short part.
       TestMgr.check(
-          "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage='must be less than or 
equal to 20', propertyPath=sayHello.arg0.age, rootBeanClass=class 
org.apache.servicecomb.demo.jaxrs.server.Validator, 
messageTemplate='{javax.validation.constraints.Max.message}'}]]",
-          e.getErrorData());
+          "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage=",
+          e.getErrorData().toString().substring(0, "CommonExceptionData 
[message=[ConstraintViolationImpl{interpolatedMessage=".length()));
     }
     TestMgr.check(true, isExcep);
   }
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/resources/microservice.yaml 
b/demo/demo-jaxrs/jaxrs-client/src/main/resources/microservice.yaml
index 35049a834..1559f5358 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/resources/microservice.yaml
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/resources/microservice.yaml
@@ -32,14 +32,14 @@ servicecomb:
       name: mycustomrule
     retryEnabled: true
     retryHandler: mycustomhandler
-cse:
+
   request:
-    timeout: 5000
+    timeout: 30000
     jaxrs:
-      timeout: 1000
+      timeout: 30000
       clientreqtimeout:
-        timeout: 150
+        timeout: 30000
         sayHello:
-          timeout: 100
+          timeout: 30000
         add:
-          timeout: 100
+          timeout: 1000
\ No newline at end of file
diff --git 
a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/RequestClientTimeOut.java
 
b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/RequestClientTimeOut.java
index 83ec4c421..387165123 100644
--- 
a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/RequestClientTimeOut.java
+++ 
b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/RequestClientTimeOut.java
@@ -35,7 +35,7 @@
   @Path("/add")
   @POST
   public int add(@FormParam("a") int a, @FormParam("b") int b) throws 
InterruptedException {
-    Thread.sleep(1000);
+    Thread.sleep(2000);
     return a + b;
   }
 
diff --git 
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
 
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
index 02061e8e3..9713069c3 100644
--- 
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
+++ 
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
@@ -48,10 +48,8 @@
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.hamcrest.Matchers;
 import org.junit.After;
-import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -105,13 +103,8 @@
   @Rule
   public ExpectedException expectedException = ExpectedException.none();
 
-  @AfterClass
-  public static void classTeardown() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @BeforeClass
-  public static void beforeCls() {
+  @Before
+  public void setUp() {
     ConfigUtil.installDynamicConfig();
     AbstractConfiguration configuration =
         (AbstractConfiguration) 
DynamicPropertyFactory.getBackingConfigurationSource();
@@ -122,10 +115,7 @@ public static void beforeCls() {
     configuration.addProperty("cse.loadbalance.serverListFilters", "a");
     configuration.addProperty("cse.loadbalance.serverListFilter.a.className",
         "org.apache.servicecomb.loadbalance.MyServerListFilterExt");
-  }
 
-  @Before
-  public void setUp() {
     new MockUp<Invocation>(invocation) {
       @Mock
       String getMicroserviceName() {
@@ -177,6 +167,7 @@ InstanceCacheManager getInstanceCacheManager() {
   public void teardown() {
     CseContext.getInstance().setTransportManager(null);
     RegistryUtils.setServiceRegistry(null);
+    ArchaiusUtils.resetConfig();
   }
 
   @Test
@@ -287,12 +278,7 @@ String getFlowsplitFilterPolicy(String microservice) {
 
   @Test
   public void setTransactionControlFilter_InvalidPolicy() {
-    new MockUp<Configuration>(Configuration.INSTANCE) {
-      @Mock
-      String getFlowsplitFilterPolicy(String microservice) {
-        return "InvalidPolicy";
-      }
-    };
+    ArchaiusUtils.setProperty("cse.loadbalance.ms.transactionControl.policy", 
"InvalidPolicy");
 
     expectedException.expect(Error.class);
     expectedException.expectMessage(Matchers.is("Fail to create instance of 
class: InvalidPolicy"));
@@ -332,6 +318,8 @@ String getFlowsplitFilterPolicy(String microservice) {
 
   @Test
   public void getOrCreateLoadBalancer() throws Exception {
+    LoadbalanceHandler handler = new LoadbalanceHandler();
+
     MicroserviceInstance instance = new MicroserviceInstance();
     instance.setInstanceId("id");
     instance.getEndpoints().add("rest://localhost:8080");


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> When provider returns Transfer-Encoding header and Edge will cause problem
> --------------------------------------------------------------------------
>
>                 Key: SCB-653
>                 URL: https://issues.apache.org/jira/browse/SCB-653
>             Project: Apache ServiceComb
>          Issue Type: Bug
>            Reporter: liubao
>            Assignee: liubao
>            Priority: Major
>
> When provider return Transfer-Encoding, Edge will copy this header to it's 
> response, and edge will add Content-Length based on it's on strategy. 
> Content-Length & Transfer-Encoding: trunked is conflict features of HTTP. 
>  
> We need to ignore HTTP internal headers of client response when sending it.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to