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 <[email protected]>
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

Reply via email to