已合并
feat(session-manager): 场景 F 快失败——拆除有界等待队列,scope 满立即 503 SCOPE_FULL #491
王明琦创建于 2 天前
feat(session-manager): 场景 F 快失败——拆除有界等待队列,scope 满立即 503 SCOPE_FULL #491
已合并
Pull Request已成功合入, 合并人@张雅晴
(感谢 王明琦 的贡献)atomgit-bot
2 天前 评论:
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.route中scope_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 = 1;metrics.py与错误码契约注释同步。 - 等待队列基础设施整体拆除:
session_manager/lua_scripts.py删除LUA_WAITER_GATE,并从LUA_EVICT、LUA_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 + 余量,超预算由 504ScopeFullTimeout改为 503NoPodAvailable(WARNING 记录真因),冷启动后 RM acquire 仍在后台完成并落 idem 缓存;e2e/多副本/单测断言同步改为「亲和续期恰好 200 + 其余立即 503 SCOPE_FULL、无waiters键残留」。


atomgit-bot
2 天前 评论:
2 天前 评论:
🤖 AI 代码检视正在进行中,请稍候…


openJiuwen-bot
2 天前 评论:
2 天前 评论:
欢迎来到 openJiuwen 社区
Hey @wangmingqi , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。


2 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot
2 天前 评论:
2 天前 评论:
2 天前 修改了pull request 的描述
openJiuwen-bot
2 天前 评论:
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}} |


2 天前 添加了label:ci-failed
atomgit-bot
2 天前 评论:
2 天前 评论:
王明琦
2 天前 评论:
2 天前 评论:
ci-pipeline


2 天前 删除了label:ci-failed
openJiuwen-bot
2 天前 评论:
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}} |


2 天前 添加了label:ci-successful
2 天前 合入了pull request
2 天前 删除了label:ci-successful
Paired: GitHub #142 ↔ GitCode !491
What type of PR is this?
/kind
Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入)