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