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 2022/09/19 12:52:23 UTC

[servicecomb-java-chassis] branch master updated: [SCB-2684]fix idle time out and keep alive timeout not properly set problem (#3346)

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 ad457d16b [SCB-2684]fix idle time out and keep alive timeout not properly set problem (#3346)
ad457d16b is described below

commit ad457d16b3bceb06ab081029143ca60ab46773cf
Author: liubao68 <bi...@qq.com>
AuthorDate: Mon Sep 19 20:52:18 2022 +0800

    [SCB-2684]fix idle time out and keep alive timeout not properly set problem (#3346)
---
 .../client/http/RegistryHttpClientOptionsSPI.java         |  6 +++++-
 .../rest/client/HttpTransportHttpClientOptionsSPI.java    |  2 +-
 .../transport/rest/client/TransportClientConfig.java      | 15 +++++++++++++++
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryHttpClientOptionsSPI.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryHttpClientOptionsSPI.java
index 2e7d630f0..d7b5c3cac 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryHttpClientOptionsSPI.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryHttpClientOptionsSPI.java
@@ -130,7 +130,11 @@ public class RegistryHttpClientOptionsSPI implements HttpClientOptionsSPI {
 
   @Override
   public int getKeepAliveTimeout() {
-    return HttpClientOptions.DEFAULT_KEEP_ALIVE_TIMEOUT;
+    int result = getIdleTimeoutInSeconds();
+    if (result > 1) {
+      return result - 1;
+    }
+    return result;
   }
 
   @Override
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpTransportHttpClientOptionsSPI.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpTransportHttpClientOptionsSPI.java
index e3a0e0241..ab7a96309 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpTransportHttpClientOptionsSPI.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpTransportHttpClientOptionsSPI.java
@@ -128,7 +128,7 @@ public class HttpTransportHttpClientOptionsSPI implements HttpClientOptionsSPI {
 
   @Override
   public int getKeepAliveTimeout() {
-    return TransportClientConfig.getConnectionIdleTimeoutInSeconds();
+    return TransportClientConfig.getConnectionKeepAliveTimeoutInSeconds();
   }
 
   @Override
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
index 20843ed96..d855d4e31 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
@@ -93,6 +93,21 @@ public final class TransportClientConfig {
         .get();
   }
 
+  public static int getConnectionKeepAliveTimeoutInSeconds() {
+    int result = DynamicPropertyFactory.getInstance()
+        .getIntProperty("servicecomb.rest.client.connection.keepAliveTimeoutInSeconds",
+            -1)
+        .get();
+    if (result >= 0) {
+      return result;
+    }
+    result = getConnectionIdleTimeoutInSeconds();
+    if (result > 1) {
+      return result - 1; // a bit shorter than ConnectionIdleTimeoutInSeconds
+    }
+    return result;
+  }
+
   public static boolean getConnectionCompression() {
     return DynamicPropertyFactory.getInstance()
         .getBooleanProperty("servicecomb.rest.client.connection.compression",