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

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


The following commit(s) were added to refs/heads/3.3 by this push:
     new d2c4bd73f5 fix: make SpringBootConfigPropsTest immune to leaked 
metrics System properties (#16420)
d2c4bd73f5 is described below

commit d2c4bd73f5192c640ed830712a52338578f83522
Author: spud <[email protected]>
AuthorDate: Tue Aug 25 14:02:41 2026 +0800

    fix: make SpringBootConfigPropsTest immune to leaked metrics System 
properties (#16420)
    
    SpringBootConfigPropsTest intermittently fails in CI with 'expected: 
<prometheus> but was: <disabled>'. The module's metrics-disabling tests set the 
JVM System property dubbo.metrics.protocol=disabled, and Dubbo's config 
resolution gives System properties the highest precedence, so depending on test 
execution order it overrides the test's @SpringBootTest property 
dubbo.metrics.protocol=prometheus.
    
    Changes:
    - SpringBootConfigPropsTest / SpringBootMultipleConfigPropsTest: clear the 
leaked dubbo.metrics.protocol / dubbo.metrics.enabled System properties in 
@BeforeAll before DubboBootstrap.reset(), so prometheus is bound regardless of 
prior test state.
    - SysProps (dubbo-config-spring and dubbo-config-api test helpers, 
dubbo-test-common): make reset() also clear the recorded System properties 
(previously it only cleared the internal map), removing the footgun that could 
leak such properties between tests.
---
 .../src/test/java/org/apache/dubbo/config/SysProps.java             | 6 +++---
 .../src/test/java/org/apache/dubbo/config/spring/SysProps.java      | 6 +++---
 .../config/spring/boot/configprops/SpringBootConfigPropsTest.java   | 6 ++++++
 .../spring/boot/configprops/SpringBootMultipleConfigPropsTest.java  | 6 ++++++
 .../src/main/java/org/apache/dubbo/test/common/SysProps.java        | 6 +++---
 5 files changed, 21 insertions(+), 9 deletions(-)

diff --git 
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/SysProps.java
 
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/SysProps.java
index 8a09132bea..7a716b23e9 100644
--- 
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/SysProps.java
+++ 
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/SysProps.java
@@ -27,6 +27,9 @@ public class SysProps {
     private static Map<String, String> map = new LinkedHashMap<String, 
String>();
 
     public static void reset() {
+        for (String key : map.keySet()) {
+            System.clearProperty(key);
+        }
         map.clear();
     }
 
@@ -36,9 +39,6 @@ public class SysProps {
     }
 
     public static void clear() {
-        for (String key : map.keySet()) {
-            System.clearProperty(key);
-        }
         reset();
     }
 }
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/SysProps.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/SysProps.java
index cb4b4d88e1..9d450d7673 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/SysProps.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/SysProps.java
@@ -27,6 +27,9 @@ public class SysProps {
     private static Map<String, String> map = new LinkedHashMap<String, 
String>();
 
     public static void reset() {
+        for (String key : map.keySet()) {
+            System.clearProperty(key);
+        }
         map.clear();
     }
 
@@ -36,9 +39,6 @@ public class SysProps {
     }
 
     public static void clear() {
-        for (String key : map.keySet()) {
-            System.clearProperty(key);
-        }
         reset();
     }
 }
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootConfigPropsTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootConfigPropsTest.java
index cf42633507..b26b7844cd 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootConfigPropsTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootConfigPropsTest.java
@@ -79,6 +79,12 @@ class SpringBootConfigPropsTest {
 
     @BeforeAll
     public static void beforeAll() {
+        // Clear JVM System properties that other tests in the same JVM may 
have left set to
+        // disable metrics. Dubbo resolves dubbo.metrics.* from the System 
properties with the
+        // highest precedence, which would otherwise override this test's 
@SpringBootTest
+        // property dubbo.metrics.protocol=prometheus and fail the assertion 
below.
+        System.clearProperty("dubbo.metrics.protocol");
+        System.clearProperty("dubbo.metrics.enabled");
         DubboBootstrap.reset();
     }
 
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootMultipleConfigPropsTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootMultipleConfigPropsTest.java
index a8022071e6..c15d75cd56 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootMultipleConfigPropsTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/configprops/SpringBootMultipleConfigPropsTest.java
@@ -80,6 +80,12 @@ class SpringBootMultipleConfigPropsTest {
 
     @BeforeAll
     public static void beforeAll() {
+        // Clear JVM System properties that other tests in the same JVM may 
have left set to
+        // disable metrics. Dubbo resolves dubbo.metrics.* from the System 
properties with the
+        // highest precedence, which would otherwise override the prometheus 
setting expected
+        // by this test.
+        System.clearProperty("dubbo.metrics.protocol");
+        System.clearProperty("dubbo.metrics.enabled");
         DubboBootstrap.reset();
     }
 
diff --git 
a/dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/SysProps.java
 
b/dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/SysProps.java
index 6c9f5c1001..6b5e5fdff8 100644
--- 
a/dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/SysProps.java
+++ 
b/dubbo-test/dubbo-test-common/src/main/java/org/apache/dubbo/test/common/SysProps.java
@@ -27,6 +27,9 @@ public class SysProps {
     private static Map<String, String> map = new LinkedHashMap<>();
 
     public static void reset() {
+        for (String key : map.keySet()) {
+            System.clearProperty(key);
+        }
         map.clear();
     }
 
@@ -36,9 +39,6 @@ public class SysProps {
     }
 
     public static void clear() {
-        for (String key : map.keySet()) {
-            System.clearProperty(key);
-        }
         reset();
     }
 }

Reply via email to