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 2021/09/14 09:24:11 UTC

[servicecomb-java-chassis] branch master updated: [SCB-2336] re-add watch idle timeout configuration (#2576)

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 222de80  [SCB-2336] re-add watch idle timeout configuration (#2576)
222de80 is described below

commit 222de803cb805cb1fba3e3d914175a7d65b1afbe
Author: waibozie <85...@users.noreply.github.com>
AuthorDate: Tue Sep 14 17:24:05 2021 +0800

    [SCB-2336] re-add watch idle timeout configuration (#2576)
---
 .../client/http/RegistryWatchHttpClientOptionsSPI.java        | 11 +++++++++++
 .../serviceregistry/config/ServiceRegistryConfig.java         | 11 +++++++++++
 .../serviceregistry/config/ServiceRegistryConfigBuilder.java  | 11 +++++++++++
 .../serviceregistry/config/TestServiceRegistryConfig.java     |  1 +
 .../src/test/resources/microservice.yaml                      |  1 +
 5 files changed, 35 insertions(+)

diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryWatchHttpClientOptionsSPI.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryWatchHttpClientOptionsSPI.java
index 95059ab..fcdda24 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryWatchHttpClientOptionsSPI.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryWatchHttpClientOptionsSPI.java
@@ -63,4 +63,15 @@ public class RegistryWatchHttpClientOptionsSPI extends RegistryHttpClientOptions
   public boolean isProxyEnable() {
     return false;
   }
+
+  /**
+   * getIdleTimeoutInSeconds configure watch idle timeout
+   * more information see: https://github.com/apache/servicecomb-java-chassis/issues/2571
+   * @return watch idle timeout in seconds
+   */
+  @Override
+  public int getIdleTimeoutInSeconds() {
+    return serviceRegistryConfig.getIdleWatchConnectionTimeout();
+  }
+
 }
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfig.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfig.java
index a0a1c03..2afec72 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfig.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfig.java
@@ -82,6 +82,8 @@ public class ServiceRegistryConfig {
 
   private int idleConnectionTimeout;
 
+  private int idleWatchConnectionTimeout;
+
   private int requestTimeout;
 
   //Set the timeout of the heartbeat request
@@ -225,6 +227,15 @@ public class ServiceRegistryConfig {
     return this;
   }
 
+  public int getIdleWatchConnectionTimeout() {
+    return idleWatchConnectionTimeout;
+  }
+
+  public ServiceRegistryConfig setIdleWatchConnectionTimeout(int idleWatchConnectionTimeout) {
+    this.idleWatchConnectionTimeout = idleWatchConnectionTimeout;
+    return this;
+  }
+
   public int getRequestTimeout() {
     return requestTimeout;
   }
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigBuilder.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigBuilder.java
index 998b601..e996c43 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigBuilder.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigBuilder.java
@@ -56,6 +56,7 @@ class ServiceRegistryConfigBuilder {
         .setWatchClientName(RegistryWatchHttpClientOptionsSPI.CLIENT_NAME)
         .setConnectionTimeout(getConnectionTimeout())
         .setIdleConnectionTimeout(getIdleConnectionTimeout())
+        .setIdleWatchConnectionTimeout(getIdleWatchTimeout())
         .setRequestTimeout(getRequestTimeout())
         .setHeartBeatRequestTimeout(getHeartBeatRequestTimeout())
         .setHeartbeatInterval(getHeartbeatInterval())
@@ -149,6 +150,16 @@ class ServiceRegistryConfigBuilder {
     return timeout < 1 ? ServiceRegistryConfig.DEFAULT_TIMEOUT_IN_SECONDS * 2 : timeout;
   }
 
+  public int getIdleWatchTimeout() {
+    // watch idle timeout based on SC PING/PONG interval. SC default value is 30.
+    DynamicIntProperty property =
+            DynamicPropertyFactory.getInstance()
+                    .getIntProperty("servicecomb.service.registry.client.timeout.watch",
+                            ServiceRegistryConfig.DEFAULT_TIMEOUT_IN_SECONDS * 2);
+    int timeout = property.get();
+    return timeout < 1 ? ServiceRegistryConfig.DEFAULT_TIMEOUT_IN_SECONDS * 2 : timeout;
+  }
+
   public int getRequestTimeout() {
     DynamicIntProperty property =
         DynamicPropertyFactory.getInstance()
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/config/TestServiceRegistryConfig.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/config/TestServiceRegistryConfig.java
index 865231d..baccda6 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/config/TestServiceRegistryConfig.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/config/TestServiceRegistryConfig.java
@@ -66,5 +66,6 @@ public class TestServiceRegistryConfig {
     Assert.assertEquals(8080, oConfig.getProxyPort());
     Assert.assertNull(oConfig.getProxyUsername());
     Assert.assertNull(oConfig.getProxyPasswd());
+    Assert.assertEquals(60,  oConfig.getIdleWatchConnectionTimeout());
   }
 }
diff --git a/service-registry/registry-service-center/src/test/resources/microservice.yaml b/service-registry/registry-service-center/src/test/resources/microservice.yaml
index 3f21d12..3d9818a 100644
--- a/service-registry/registry-service-center/src/test/resources/microservice.yaml
+++ b/service-registry/registry-service-center/src/test/resources/microservice.yaml
@@ -44,6 +44,7 @@ servicecomb:
         timeout:
           connection: 30000
           idle: 30000
+          watch: 60
       instance:
         watch: true
         preferIpAddress: false