You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by li...@apache.org on 2023/05/08 06:14:29 UTC

[shenyu] branch master updated: fix warmup time (#4619)

This is an automated email from the ASF dual-hosted git repository.

likeguo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new 2f090ffa9 fix warmup time (#4619)
2f090ffa9 is described below

commit 2f090ffa9ce5fa4b0efb87173a2bb461e57fc096
Author: dragon-zhang <zh...@apache.org>
AuthorDate: Mon May 8 14:14:24 2023 +0800

    fix warmup time (#4619)
    
    * fix warmup time
    
    * fix test bug
---
 .../shenyu/admin/utils/CommonUpstreamUtils.java    | 74 ++++++++++++++++------
 .../ShenyuClientRegisterDubboServiceImplTest.java  |  8 +--
 ...enyuClientRegisterWebSocketServiceImplTest.java |  4 +-
 .../apache/shenyu/common/constant/Constants.java   |  5 ++
 .../ShenyuSpringCloudServiceChooser.java           |  3 +-
 5 files changed, 69 insertions(+), 25 deletions(-)

diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/CommonUpstreamUtils.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/CommonUpstreamUtils.java
index 6dd874a42..c37d86216 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/CommonUpstreamUtils.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/CommonUpstreamUtils.java
@@ -18,6 +18,7 @@
 package org.apache.shenyu.admin.utils;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shenyu.common.constant.Constants;
 import org.apache.shenyu.common.dto.convert.selector.CommonUpstream;
 import org.apache.shenyu.common.dto.convert.selector.DivideUpstream;
 import org.apache.shenyu.common.dto.convert.selector.DubboUpstream;
@@ -46,8 +47,12 @@ public class CommonUpstreamUtils {
      * @return the divide upstream
      */
     public static DivideUpstream buildDefaultDivideUpstream(final String host, final Integer port) {
-        return DivideUpstream.builder().upstreamHost(LOCALHOST).protocol("http://").upstreamUrl(buildUrl(host, port)).weight(50).warmup(10).timestamp(System.currentTimeMillis())
-                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host)).build();
+        return DivideUpstream.builder().upstreamHost(LOCALHOST)
+                .protocol("http://").upstreamUrl(buildUrl(host, port))
+                .weight(50).warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis())
+                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host))
+                .build();
     }
 
     /**
@@ -57,7 +62,10 @@ public class CommonUpstreamUtils {
      * @return the divide upstream
      */
     public static DivideUpstream buildDefaultAliveDivideUpstream(final String upstreamUrl) {
-        return DivideUpstream.builder().upstreamHost(LOCALHOST).protocol("http://").upstreamUrl(upstreamUrl).weight(50).warmup(10).timestamp(System.currentTimeMillis()).build();
+        return DivideUpstream.builder().upstreamHost(LOCALHOST)
+                .protocol("http://").upstreamUrl(upstreamUrl)
+                .weight(50).warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis()).build();
     }
 
     /**
@@ -69,8 +77,12 @@ public class CommonUpstreamUtils {
      * @return the divide upstream
      */
     public static DivideUpstream buildDivideUpstream(final String protocol, final String host, final Integer port) {
-        return DivideUpstream.builder().upstreamHost(LOCALHOST).protocol(protocol).upstreamUrl(buildUrl(host, port)).weight(50).warmup(10).timestamp(System.currentTimeMillis())
-                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host)).build();
+        return DivideUpstream.builder().upstreamHost(LOCALHOST)
+                .protocol(protocol).upstreamUrl(buildUrl(host, port))
+                .weight(50).warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis())
+                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host))
+                .build();
     }
 
     /**
@@ -81,7 +93,10 @@ public class CommonUpstreamUtils {
      * @return the divide upstream
      */
     public static DivideUpstream buildAliveDivideUpstream(final String protocol, final String upstreamUrl) {
-        return DivideUpstream.builder().upstreamHost(LOCALHOST).protocol(protocol).upstreamUrl(upstreamUrl).weight(50).warmup(10).timestamp(System.currentTimeMillis()).build();
+        return DivideUpstream.builder().upstreamHost(LOCALHOST)
+                .protocol(protocol).upstreamUrl(upstreamUrl)
+                .weight(50).warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis()).build();
     }
 
     /**
@@ -93,8 +108,12 @@ public class CommonUpstreamUtils {
      * @return the websocket upstream
      */
     public static WebSocketUpstream buildWebSocketUpstream(final String protocol, final String host, final Integer port) {
-        return WebSocketUpstream.builder().host(LOCALHOST).protocol(protocol).upstreamUrl(buildUrl(host, port)).weight(50).warmup(10).timestamp(System.currentTimeMillis())
-                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host)).build();
+        return WebSocketUpstream.builder().host(LOCALHOST).protocol(protocol)
+                .upstreamUrl(buildUrl(host, port)).weight(50)
+                .warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis())
+                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host))
+                .build();
     }
 
     /**
@@ -105,8 +124,12 @@ public class CommonUpstreamUtils {
      * @return the dubbo upstream
      */
     public static DubboUpstream buildDefaultDubboUpstream(final String host, final Integer port) {
-        return DubboUpstream.builder().upstreamHost(LOCALHOST).protocol("dubbo://").upstreamUrl(buildUrl(host, port)).weight(50).warmup(10).timestamp(System.currentTimeMillis())
-                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host)).build();
+        return DubboUpstream.builder().upstreamHost(LOCALHOST)
+                .protocol("dubbo://").upstreamUrl(buildUrl(host, port))
+                .weight(50).warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis())
+                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host))
+                .build();
     }
 
     /**
@@ -116,7 +139,11 @@ public class CommonUpstreamUtils {
      * @return the dubbo upstream
      */
     public static DubboUpstream buildAliveDubboUpstream(final String upstreamUrl) {
-        return DubboUpstream.builder().upstreamHost(LOCALHOST).protocol("dubbo://").upstreamUrl(upstreamUrl).weight(50).warmup(10).timestamp(System.currentTimeMillis()).build();
+        return DubboUpstream.builder().upstreamHost(LOCALHOST)
+                .protocol("dubbo://").upstreamUrl(upstreamUrl).weight(50)
+                .warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis())
+                .build();
     }
 
     /**
@@ -127,8 +154,10 @@ public class CommonUpstreamUtils {
      * @return the grpc upstream
      */
     public static GrpcUpstream buildDefaultGrpcUpstream(final String host, final Integer port) {
-        return GrpcUpstream.builder().upstreamUrl(buildUrl(host, port)).weight(50).timestamp(System.currentTimeMillis())
-                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host)).build();
+        return GrpcUpstream.builder().upstreamUrl(buildUrl(host, port))
+                .weight(50).timestamp(System.currentTimeMillis())
+                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host))
+                .build();
     }
 
     /**
@@ -138,7 +167,8 @@ public class CommonUpstreamUtils {
      * @return the grpc upstream
      */
     public static GrpcUpstream buildAliveGrpcUpstream(final String upstreamUrl) {
-        return GrpcUpstream.builder().upstreamUrl(upstreamUrl).weight(50).timestamp(System.currentTimeMillis()).build();
+        return GrpcUpstream.builder().upstreamUrl(upstreamUrl).weight(50)
+                .timestamp(System.currentTimeMillis()).build();
     }
 
     /**
@@ -149,8 +179,11 @@ public class CommonUpstreamUtils {
      * @return the tars upstream
      */
     public static TarsUpstream buildDefaultTarsUpstream(final String host, final Integer port) {
-        return TarsUpstream.builder().upstreamUrl(buildUrl(host, port)).weight(50).warmup(10).timestamp(System.currentTimeMillis())
-                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host)).build();
+        return TarsUpstream.builder().upstreamUrl(buildUrl(host, port))
+                .weight(50).warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis())
+                .status(Objects.nonNull(port) && StringUtils.isNotBlank(host))
+                .build();
     }
 
     /**
@@ -160,7 +193,10 @@ public class CommonUpstreamUtils {
      * @return the tars upstream
      */
     public static TarsUpstream buildAliveTarsUpstream(final String upstreamUrl) {
-        return TarsUpstream.builder().upstreamUrl(upstreamUrl).weight(50).warmup(10).timestamp(System.currentTimeMillis()).build();
+        return TarsUpstream.builder().upstreamUrl(upstreamUrl).weight(50)
+                .warmup(Constants.WARMUP_TIME)
+                .timestamp(System.currentTimeMillis())
+                .build();
     }
 
     /**
@@ -173,7 +209,9 @@ public class CommonUpstreamUtils {
         return Optional.ofNullable(upstreamList)
                 .orElse(Collections.emptyList())
                 .stream()
-                .map(upstream -> new CommonUpstream(upstream.getProtocol(), upstream.getUpstreamHost(), upstream.getUpstreamUrl(), upstream.isStatus(), upstream.getTimestamp()))
+                .map(upstream -> new CommonUpstream(upstream.getProtocol(),
+                        upstream.getUpstreamHost(), upstream.getUpstreamUrl(),
+                        upstream.isStatus(), upstream.getTimestamp()))
                 .collect(Collectors.toList());
     }
     
diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDubboServiceImplTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDubboServiceImplTest.java
index f21e149ce..67aedcb50 100644
--- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDubboServiceImplTest.java
+++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDubboServiceImplTest.java
@@ -105,10 +105,10 @@ public final class ShenyuClientRegisterDubboServiceImplTest {
     public void testBuildHandle() {
         shenyuClientRegisterDubboService = spy(shenyuClientRegisterDubboService);
     
-        final String returnStr = "[{protocol:'dubbo://',upstreamHost:'localhost',upstreamUrl:'localhost:8090',warmup:10,weight:50,status:true,timestamp:1637826588267},"
-                + "{protocol:'dubbo://',upstreamHost:'localhost',upstreamUrl:'localhost:8091',warmup:10,weight:50,status:false,timestamp:" + (System.currentTimeMillis() + 60000) + "}]";
-        final String expected = "[{\"port\":0,\"weight\":50,\"warmup\":10,\"protocol\":\"dubbo://\",\"upstreamHost\":\"localhost\",\"upstreamUrl\":\"localhost:8090\","
-                + "\"status\":true,\"timestamp\":1637826588267},{\"port\":0,\"weight\":50,\"warmup\":10,\"protocol\":\"dubbo://\",\"upstreamHost\":\"localhost\","
+        final String returnStr = "[{protocol:'dubbo://',upstreamHost:'localhost',upstreamUrl:'localhost:8090',warmup:600000,weight:50,status:true,timestamp:1637826588267},"
+                + "{protocol:'dubbo://',upstreamHost:'localhost',upstreamUrl:'localhost:8091',warmup:600000,weight:50,status:false,timestamp:" + (System.currentTimeMillis() + 60000) + "}]";
+        final String expected = "[{\"port\":0,\"weight\":50,\"warmup\":600000,\"protocol\":\"dubbo://\",\"upstreamHost\":\"localhost\",\"upstreamUrl\":\"localhost:8090\","
+                + "\"status\":true,\"timestamp\":1637826588267},{\"port\":0,\"weight\":50,\"warmup\":600000,\"protocol\":\"dubbo://\",\"upstreamHost\":\"localhost\","
                 + "\"upstreamUrl\":\"localhost:8091\",\"status\":false,\"timestamp\":1637826588267}]";
         
         List<URIRegisterDTO> list = new ArrayList<>();
diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterWebSocketServiceImplTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterWebSocketServiceImplTest.java
index 0a1ed5a18..21f0935ec 100644
--- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterWebSocketServiceImplTest.java
+++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterWebSocketServiceImplTest.java
@@ -103,7 +103,7 @@ class ShenyuClientRegisterWebSocketServiceImplTest {
         assertEquals(webSocketUpstreamResult.get("host"), "localhost");
         assertEquals(webSocketUpstreamResult.get("url"), "host:8080");
         assertEquals(webSocketUpstreamResult.get("weight"), 50.0);
-        assertEquals(webSocketUpstreamResult.get("warmup"), 10.0);
+        assertEquals(webSocketUpstreamResult.get("warmup"), 600000.0);
         assertEquals(webSocketUpstreamResult.get("upstreamHost"), "localhost");
         assertEquals(webSocketUpstreamResult.get("status"), true);
 
@@ -123,7 +123,7 @@ class ShenyuClientRegisterWebSocketServiceImplTest {
         assertEquals(webSocketUpstreamResult.get("host"), "localhost");
         assertEquals(webSocketUpstreamResult.get("url"), "host:8080");
         assertEquals(webSocketUpstreamResult.get("weight"), 50.0);
-        assertEquals(webSocketUpstreamResult.get("warmup"), 10.0);
+        assertEquals(webSocketUpstreamResult.get("warmup"), 600000.0);
         assertEquals(webSocketUpstreamResult.get("upstreamHost"), "localhost");
         assertEquals(webSocketUpstreamResult.get("status"), true);
     }
diff --git a/shenyu-common/src/main/java/org/apache/shenyu/common/constant/Constants.java b/shenyu-common/src/main/java/org/apache/shenyu/common/constant/Constants.java
index 2a871b19e..023380e3d 100644
--- a/shenyu-common/src/main/java/org/apache/shenyu/common/constant/Constants.java
+++ b/shenyu-common/src/main/java/org/apache/shenyu/common/constant/Constants.java
@@ -691,6 +691,11 @@ public interface Constants {
      * brpc  spi bizThreadPoolName.
      */
     String SHARED_BIZTHREADPOOLNAME = "shared";
+    
+    /**
+     * the default warm time is ten minutes.
+     */
+    int WARMUP_TIME = 10 * 60 * 1000;
 
     /**
      * String q.
diff --git a/shenyu-plugin/shenyu-plugin-springcloud/src/main/java/org/apache/shenyu/plugin/springcloud/loadbalance/ShenyuSpringCloudServiceChooser.java b/shenyu-plugin/shenyu-plugin-springcloud/src/main/java/org/apache/shenyu/plugin/springcloud/loadbalance/ShenyuSpringCloudServiceChooser.java
index db9d26202..e41f5cf78 100644
--- a/shenyu-plugin/shenyu-plugin-springcloud/src/main/java/org/apache/shenyu/plugin/springcloud/loadbalance/ShenyuSpringCloudServiceChooser.java
+++ b/shenyu-plugin/shenyu-plugin-springcloud/src/main/java/org/apache/shenyu/plugin/springcloud/loadbalance/ShenyuSpringCloudServiceChooser.java
@@ -18,6 +18,7 @@
 package org.apache.shenyu.plugin.springcloud.loadbalance;
 
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.shenyu.common.constant.Constants;
 import org.apache.shenyu.common.dto.convert.selector.SpringCloudSelectorHandle;
 import org.apache.shenyu.loadbalancer.cache.UpstreamCacheManager;
 import org.apache.shenyu.loadbalancer.entity.Upstream;
@@ -149,7 +150,7 @@ public final class ShenyuSpringCloudServiceChooser {
         return Upstream.builder().url(upstreamUrl)
                 .protocol(protocol)
                 .weight(50)
-                .warmup(10)
+                .warmup(Constants.WARMUP_TIME)
                 .timestamp(0)
                 .build();
     }