fix(processing): WP1 核心语义(ACM2-10 U06/U08/U10/U11)

- U06/N03:Dispatcher 逐条循环显式排除 KAFKA_SCHD(唯一出口 flushSchd 批量聚合),
  修复 schd 事件被无条件 markSent 吞掉、flush 永远 claim 不到的整链死路;flush 失败整批
  保持 PENDING、lastFlush 仅成功后推进(N24)
- U08 部分:Pump/Dispatcher loop 异常隔离(单次异常不静默死亡,U12 补告警日志);
  processOne FAILED 入口 attempts 毒丸升级 DEAD(防退避到期后无限重试);
  N28:backoffFor(attempt≤0) 下界保护不再抛异常
- U10/N21:未注册 handler → FAILED(UNSUPPORTED)+退避(绝不写终态);占位安全化——
  HistorySweep.pickHistory 占位改空集(T07 修订)、SnapshotFlow staging 未实装改
  FAILED(UNSUPPORTED)+退避而非 DEAD(N05),CAS 冲突 FAILED(INFRA)+退避(N06 紧循环修复)
- U11/T06:decode 失败差异化——MALFORMED→DEAD 不重试;CODEC_ERROR→FAILED 可重放
- 新增 ErrorClass.UNSUPPORTED;单测:DispatcherTickTest(3)/MessageProcessorTest(6)/
  PipelinePropsTest(2),19 个测试全绿
This commit is contained in:
windyboy
2026-09-06 18:19:04 +08:00
parent 821da1334c
commit 2175c352f6
10 changed files with 525 additions and 49 deletions
@@ -15,7 +15,7 @@ CREATE TABLE PROC_STATE (
IDENTITY_KEY VARCHAR(200) NULL, -- SNDR|TYPE|STYP|SEQNdecode 后首次绑定(I3
ATTEMPTS INT NOT NULL DEFAULT 0,
NEXT_ATTEMPT_AT TIMESTAMP NULL,
ERROR_CLASS VARCHAR(20) NULL, -- MALFORMED/CODEC_ERROR/EXHAUSTED/INFRA
ERROR_CLASS VARCHAR(20) NULL, -- MALFORMED/CODEC_ERROR/EXHAUSTED/INFRA/UNSUPPORTED
LAST_ERROR VARCHAR(1000) NULL,
UPDATED_AT TIMESTAMP NOT NULL,
UNIQUE KEY UK_PROC_IDENTITY (IDENTITY_KEY),