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

albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new 0a7a960f39 Default heartbeat configurable (#12241)
0a7a960f39 is described below

commit 0a7a960f39c13ec8658ebc388ee782648b136b1b
Author: Albumen Kevin <[email protected]>
AuthorDate: Sun May 7 20:30:52 2023 +0800

    Default heartbeat configurable (#12241)
---
 .../src/main/java/org/apache/dubbo/remoting/Constants.java    |  1 +
 .../main/java/org/apache/dubbo/remoting/utils/UrlUtils.java   | 11 ++++++++++-
 .../java/org/apache/dubbo/remoting/utils/UrlUtilsTest.java    |  9 +++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Constants.java
 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Constants.java
index df8e5dcb45..9920ab126a 100644
--- 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Constants.java
+++ 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Constants.java
@@ -143,6 +143,7 @@ public interface Constants {
     String DEFAULT_PROMPT = "dubbo>";
     String TELNET_KEY = "telnet";
     String HEARTBEAT_KEY = "heartbeat";
+    String HEARTBEAT_CONFIG_KEY = "dubbo.protocol.default-heartbeat";
     int DEFAULT_HEARTBEAT = 60 * 1000;
     String HEARTBEAT_TIMEOUT_KEY = "heartbeat.timeout";
     String CONNECTIONS_KEY = "connections";
diff --git 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/utils/UrlUtils.java
 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/utils/UrlUtils.java
index 56b8bac3a9..fe620b613f 100644
--- 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/utils/UrlUtils.java
+++ 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/utils/UrlUtils.java
@@ -47,7 +47,16 @@ public class UrlUtils {
     }
 
     public static int getHeartbeat(URL url) {
-        return url.getParameter(Constants.HEARTBEAT_KEY, 
Constants.DEFAULT_HEARTBEAT);
+        String configuredHeartbeat = 
System.getProperty(Constants.HEARTBEAT_CONFIG_KEY);
+        int defaultHeartbeat = Constants.DEFAULT_HEARTBEAT;
+        if (StringUtils.isNotEmpty(configuredHeartbeat)) {
+            try {
+                defaultHeartbeat = Integer.parseInt(configuredHeartbeat);
+            } catch (NumberFormatException e) {
+                // use default heartbeat
+            }
+        }
+        return url.getParameter(Constants.HEARTBEAT_KEY, defaultHeartbeat);
     }
 
     /**
diff --git 
a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/utils/UrlUtilsTest.java
 
b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/utils/UrlUtilsTest.java
index 40460c470e..2ba6f2b506 100644
--- 
a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/utils/UrlUtilsTest.java
+++ 
b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/utils/UrlUtilsTest.java
@@ -17,6 +17,7 @@
 package org.apache.dubbo.remoting.utils;
 
 import org.apache.dubbo.common.URL;
+import org.apache.dubbo.remoting.Constants;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -37,4 +38,12 @@ class UrlUtilsTest {
         URL url = URL.valueOf("dubbo://127.0.0.1:12345?heartbeat=10000");
         Assertions.assertEquals(UrlUtils.getHeartbeat(url), 10000);
     }
+
+    @Test
+    void testConfiguredHeartbeat() {
+        System.setProperty(Constants.HEARTBEAT_CONFIG_KEY, "200");
+        URL url = URL.valueOf("dubbo://127.0.0.1:12345");
+        Assertions.assertEquals(200, UrlUtils.getHeartbeat(url));
+        System.clearProperty(Constants.HEARTBEAT_CONFIG_KEY);
+    }
 }

Reply via email to