This is an automated email from the ASF dual-hosted git repository.
moremind 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 7c8a67ddfc fix: eliminate race condition in
UpstreamCheckServiceTest.testReplace (#6355)
7c8a67ddfc is described below
commit 7c8a67ddfc26ab6091c8112746592ebb11db7916
Author: eye-gu <[email protected]>
AuthorDate: Fri Jun 5 21:45:32 2026 +0800
fix: eliminate race condition in UpstreamCheckServiceTest.testReplace
(#6355)
* fix: eliminate race condition in UpstreamCheckServiceTest.testReplace
* chore: trigger CI
* fix review
* fix review
---
.../apache/shenyu/admin/service/UpstreamCheckServiceTest.java | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/UpstreamCheckServiceTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/UpstreamCheckServiceTest.java
index 45875affdd..a10c4541f3 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/UpstreamCheckServiceTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/UpstreamCheckServiceTest.java
@@ -58,6 +58,7 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -214,18 +215,15 @@ public final class UpstreamCheckServiceTest {
@Test
public void testReplace() {
- ScheduledThreadPoolExecutor executor = new
ScheduledThreadPoolExecutor(1,
ShenyuThreadFactory.create("scheduled-upstream-task", false));
- ReflectionTestUtils.setField(upstreamCheckService, "executor",
executor);
final DivideUpstream divideUpstream = DivideUpstream.builder()
.upstreamHost("localhost")
.build();
final DivideUpstream divideUpstream2 = DivideUpstream.builder()
.upstreamHost("localhost2")
.build();
- upstreamCheckService.submit(MOCK_SELECTOR_NAME_2, divideUpstream);
- assertEquals(1, upstreamMap.get(MOCK_SELECTOR_NAME_2).size());
- assertEquals("localhost",
upstreamMap.get(MOCK_SELECTOR_NAME_2).get(0).getUpstreamHost());
- upstreamCheckService.replace(MOCK_SELECTOR_NAME_2,
Collections.singletonList(divideUpstream2));
+ UpstreamCheckService.removeByKey(MOCK_SELECTOR_NAME_2);
+ upstreamCheckService.replace(MOCK_SELECTOR_NAME_2, new
CopyOnWriteArrayList<>(Collections.singletonList(divideUpstream)));
+ upstreamCheckService.replace(MOCK_SELECTOR_NAME_2, new
CopyOnWriteArrayList<>(Collections.singletonList(divideUpstream2)));
assertEquals(1, upstreamMap.get(MOCK_SELECTOR_NAME_2).size());
assertEquals("localhost2",
upstreamMap.get(MOCK_SELECTOR_NAME_2).get(0).getUpstreamHost());
}