已合并
feat(session-manager): 场景 F 快失败——拆除有界等待队列,scope 满立即 503 SCOPE_FULL #491
feat(session-manager): 场景 F 快失败——拆除有界等待队列,scope 满立即 503 SCOPE_FULL #491
已合并
王明琦创建于 2 天前
王明琦
王明琦成员
2 天前

Paired: GitHub #142GitCode !491

What type of PR is this?

/kind

Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入

likedislike
Pull Request已成功合入, 合并人@张雅晴
(感谢 王明琦 的贡献)
atomgit-bot
atomgit-bot
2 天前 评论:

变更摘要

本 PR(场景 F 快失败改造)拆除了 Session Manager 的「有界等待队列」机制:scope 容量满时不再入队等待或订阅 free 信号,而是由 LUA_ROUTE_PLACE 原子闸门仲裁后立即返回 503 SCOPE_FULL(带 retry_after),背压责任交回 gateway 的指数退避。背景如模块注释所述:redis-py asyncio 版 RedisCluster 无 pubsub 实现,等待队列/订阅唤醒路径整体不可行。配套删除了等待队列相关的 Lua 脚本、Redis 键、配置项与错误码(原 504 SCOPE_FULL_TIMEOUT / 503 SCOPE_QUEUE_FULL 合并为 503 SCOPE_FULL),并将单次 route 总预算(ready_timeout + 余量)超限行为从 504 改为 503 NoPodAvailable(WARNING 留真因,幂等回放语义不变),同步更新了 e2e/压测/集成测试断言与可视化 API 字段。

主要改动

  • route 主循环 scope_full 分支改为立即快失败: SessionOrchestrator.routescope_full 动作不再调用 _wait_for_capacity(该方法整体删除),直接以 DEFAULT_RETRY_AFTER 抛出 ScopeFull,实现「毫秒级 503、不排队不订阅、零额外 Redis 写」。
  • 错误码与过载契约收敛: errors.py 删除 SCOPE_FULL_TIMEOUT/SCOPE_QUEUE_FULL 两个错误码及 ScopeFullTimeout/ScopeQueueFull 异常类,统一为 SCOPE_FULL(503),并新增共享常量 DEFAULT_RETRY_AFTER = 1metrics.py 与错误码契约注释同步。
  • 等待队列基础设施整体拆除: session_manager/lua_scripts.py 删除 LUA_WAITER_GATE,并从 LUA_EVICTLUA_TOUCH、route 惰性回收等路径移除 PUBLISH ... :free 唤醒信号(脚本数 7→6);state.py 删除 scope_waiters/scope_free_channel 键及 waiter_count/try_add_waiter/add_waiter/remove_waiter 方法。
  • 配置项与观测面清理: 删除 AgentRuntimeConfig.scope_full_timeout 字段与 _env_float 辅助函数,以及部署侧的 AGENT_RUNTIME_SCOPE_FULL_TIMEOUT 环境变量(.env.example、模板 yaml、config summary 日志);visualization_api.py 的会话/scope 概览移除 waiters 字段。
  • 单次 route 总预算重定义并改为 503 粗化: 总预算由 scope_full_timeout + ready_timeout + 余量 简化为 ready_timeout + 余量,超预算由 504 ScopeFullTimeout 改为 503 NoPodAvailable(WARNING 记录真因),冷启动后 RM acquire 仍在后台完成并落 idem 缓存;e2e/多副本/单测断言同步改为「亲和续期恰好 200 + 其余立即 503 SCOPE_FULL、无 waiters 键残留」。
likedislike
atomgit-bot
atomgit-bot
2 天前 评论:

🤖 AI 代码检视正在进行中,请稍候…

likedislike
openJiuwen-bot成员
2 天前 评论:

欢迎来到 openJiuwen 社区

Hey @wangmingqi , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

likedislike
OopenJiuwen-bot成员
2 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
2 天前 评论:

CLA 签署成功

wangmingqi, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
Oopenjiuwen-sync成员
2 天前 修改了pull request 的描述
openJiuwen-bot成员
2 天前 评论:
任务名称 结果 日志操作
静态检查 ❌FAILED 点此跳转
禁用词扫描 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 N/A N/A
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck {{ruff_codecheck_result}} {{ruff_codecheck_link_text}}
issue关联检查 {{issue_linked_result}} {{issue_linked_link_text}}
pr size检查 {{pr_size_result}} {{pr_size_link_text}}
likedislike
OopenJiuwen-bot成员
2 天前 添加了label:ci-failed
atomgit-bot
atomgit-bot
2 天前 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
王明琦
王明琦成员
2 天前 评论:

ci-pipeline

likedislike
OopenJiuwen-bot成员
2 天前 删除了label:ci-failed
openJiuwen-bot成员
2 天前 评论:
任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
禁用词扫描 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 N/A N/A
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck {{ruff_codecheck_result}} {{ruff_codecheck_link_text}}
issue关联检查 {{issue_linked_result}} {{issue_linked_link_text}}
pr size检查 {{pr_size_result}} {{pr_size_link_text}}
likedislike
OopenJiuwen-bot成员
2 天前 添加了label:ci-successful
张雅晴张雅晴成员
2 天前 合入了pull request
OopenJiuwen-bot成员
2 天前 删除了label:ci-successful