Skip to content

[BUG][OPT-21] 为 A2A 流队列满载提供明确背压与可靠终态 #212

Open

Description

@Aias00

总览:#180

代码依据

final BlockingQueue<AsyncGenerator.Data<NodeOutput>> queue = new LinkedBlockingQueue<>(1000);

问题与验收

A2A streaming 使用容量 1000 的 LinkedBlockingQueue,却通过 add 写入普通事件、错误和最终 done。队列满时 add 抛异常,catch/finally 再次 add 也可能失败,终态标记不能保证进入队列。

范围与验收

  • 使用可控快生产者/慢消费者填满队列,复现普通事件和终态写入失败;覆盖相关 streaming generator 路径。
  • 对比可取消阻塞背压、限时 offer 加明确 overflow 错误、独立终态通道等方案;禁止仅改成无界队列。
  • 正常、失败、满载和消费者取消下,流在约定时间内完成或失败,不因终态投递失败永久等待。
  • 不静默丢工具/状态/终态事件,明确允许合并或丢弃的瞬时事件;不得以丢数据伪装成功。
  • 背压等待响应取消并释放 HTTP/生产者资源,不使结束清理再阻塞在同一满队列上。
  • 明确容量/等待配置与默认依据;相关 A2A 测试通过,保留现有消息关联及正常顺序。

与 OPT-22 协调错误终态;不重复 Extensions #25 SDK 升级或 #14 持久化取消适配,也不等待这些任务才修复。

验证与兼容约束

Core 基线 f45b2cf。当前为静态代码分析,尚未运行本单针对性复现。先补有意义的行为测试,优先局部修复;公共 API/输出/调度语义变化需说明收益、影响、兼容替代、迁移成本及目标版本。修复不等待 Agent/Workflow/Loop 全局重构。

关联任务

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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