review 发现 #9:成功标记是逐条 store 往返(Redis 网络 IO),却跑在 flushLock 内——该锁本职只是串行化业务批量调用,批已出缓冲、key 逐条 独立,标记占锁只是白白让下一批的业务刷出排队(最多多等 batchSize 次 网络往返)。 修复:markSuccess 循环移到 synchronized 块外。失败路径(落库+吞)不变, 仍在锁内直接 return。去重正确性不受影响:同 key 不会同时出现在两批 (tryAcquire 挡住),store 本身并发安全。 测试:store 回调在首批标记进行中从另一线程投满一批,断言其刷出不被 flushLock 挡住(修复前该测试失败:另一线程阻塞在锁上)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>