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

Reply via email to