Skip to content

清理 state store 旧行 TTL fallback,移除 pending claim 的 legacy 兼容 #425

@liujuanjuan1984

Description

@liujuanjuan1984

背景

当前 state_store 的 schema version 迁移已经存在,但 a2a_pending_session_claims 仍保留对旧行 updated_at 语义的运行时 fallback:

  • 读取时:expires_at 为空会回退到 updated_at + ttl
  • 清理时:仍保留 expires_at IS NULL 的旧行分支
  • 命名上也仍有 legacy_* 残留

这不是 A2A 协议兼容问题,而是内部状态表数据迁移没有彻底收口。

目标

采用长期最干净的方案,清理掉源码中的旧行兼容逻辑:

  1. 设计并落地一次明确的数据迁移/backfill,处理 expires_at IS NULL 的旧行。
  2. 迁移完成后,删除运行时 updated_at fallback 逻辑。
  3. 删除或重命名 legacy_* 相关符号,避免继续在源码中保留历史语义。
  4. 评估 updated_at 列是否仍有保留价值;如无必要,规划后续 schema 迁移去除。

约束与注意事项

  • 旧行本身不保存“写入当时的 TTL 配置”,因此 backfill 策略需要显式定义,不能隐式假设当前 TTL 就等于历史 TTL。
  • 这项工作与 A2A v1 协议迁移解耦,单独跟进,不阻塞当前协议升级 PR。

验收建议

  • state_store 迁移测试覆盖旧表、旧行、并发初始化场景。
  • 迁移完成后,生产代码中不再出现 pending-claim 的 updated_at fallback 读取/清理分支。
  • legacy_* 命名从主路径移除。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions