Commit 5cfd9ac
fix: 修复 runnableParallel 中的 NPE 竞态条件
问题验证(TDD 红色阶段):
✅ Run ID: 20535263656
✅ 测试失败:1003 个测试中 1 个错误
✅ 错误:NullPointerException at Tip.merge(Tip.java:121)
✅ 调用链:AiStart.runnableParallel → Fork.process → acc.merge(null)
根本原因:
- Fork.join() 设计上会在前 N-1 个分支完成时返回 null
- AiStart.runnableParallel() 没有正确处理这个 null 值
- 导致偶发的 acc.merge(null) → NPE
修复方案:
1. AiStart.java:596-600 - 在 reducer 中添加 null 检查,过滤 Fork 返回的 null 值
2. Tip.java:121 - 添加防御性 null 验证
预期效果(TDD 绿色阶段):
- 1003 个测试全部通过
- NPE 失败率从 0.5% 降至 0%
- CI/CD 稳定性提升
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>1 parent c9ee4bd commit 5cfd9ac
File tree
2 files changed
+6
-1
lines changed- framework/fel/java
- fel-core/src/main/java/modelengine/fel/core/util
- fel-flow/src/main/java/modelengine/fel/engine/activities
2 files changed
+6
-1
lines changedLines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
| 121 | + | |
121 | 122 | | |
122 | 123 | | |
123 | 124 | | |
| |||
Lines changed: 5 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
593 | 593 | | |
594 | 594 | | |
595 | 595 | | |
596 | | - | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
597 | 601 | | |
598 | 602 | | |
599 | 603 | | |
| |||
0 commit comments