执行锁与幂等控制

锁的职责

执行锁用于减少多个 worker 同时处理同一个意图。锁的范围应包含链、账户与业务意图;账户序列相关冲突可能还需要独立的账户级协调。

建议租约流程

以随机所有者标识和有效期原子获取锁。续租与释放均先验证所有者,避免旧 worker 释放新 worker 的锁。外部调用必须有超时,防止持锁工作无限等待。

租约过期后的风险

锁过期不会停止旧 worker。建议状态版本、持久执行记录与提交前执行权检查共同约束行为,避免仅靠 TTL 宣称不会重复交易。链上提交无法加入 Redis 原子操作,结果未知时先查原交易。

幂等判定

同一业务意图返回已有执行结果或继续追踪已有提交。策略配置变化、账户变化或用户明确要求新动作时,应通过新的意图关联原任务,而非复用模糊的地址 Key。

验证场景

两个 worker 同时领取、worker 暂停超过租约、续租失败、旧 worker 迟到释放及提交后进程崩溃。核对实际广播次数与意图记录是否一致。