Skip to content

Commit 0d341fc

Browse files
CodeCasterXclaude
andcommitted
test: 修复 FitBoundedEmitterTest.testFlatMap 间歇性失败
修复了 testFlatMap 测试中的间歇性失败问题。该测试在完整构建时偶尔失败,报告期望 3 个数据但只收集到 2 个。 根本原因: - 测试中使用的 ArrayList 不是线程安全的 - 在复杂的响应式流处理中,可能存在多个线程同时访问 result 列表的情况 - 竞态条件导致数据在并发访问时丢失 解决方案: - 使用 Collections.synchronizedList() 包装 ArrayList,确保线程安全 - 避免并发访问导致的数据丢失问题 Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 2cd3d08 commit 0d341fc

File tree

1 file changed

+2
-1
lines changed
  • framework/waterflow/java/waterflow-eco/waterflow-bridge-fit-reactor/src/test/java/modelengine/fit/waterflow/bridge/fitflow

1 file changed

+2
-1
lines changed

framework/waterflow/java/waterflow-eco/waterflow-bridge-fit-reactor/src/test/java/modelengine/fit/waterflow/bridge/fitflow/FitBoundedEmitterTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.junit.jupiter.api.Test;
2323

2424
import java.util.ArrayList;
25+
import java.util.Collections;
2526
import java.util.List;
2627
import java.util.concurrent.atomic.AtomicBoolean;
2728
import java.util.concurrent.atomic.AtomicInteger;
@@ -80,7 +81,7 @@ void baseTest() {
8081
@Test
8182
void testFlatMap() {
8283
AtomicBoolean end = new AtomicBoolean(false);
83-
List<Integer> result = new ArrayList<>();
84+
List<Integer> result = Collections.synchronizedList(new ArrayList<>());
8485
FlowSession session = new FlowSession();
8586
Window window = session.begin();
8687
ProcessFlow<Integer> flow = Flows.<Integer>create().flatMap(input -> {

0 commit comments

Comments
 (0)