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);
+ }
}