Skip to content

fix(task): enforce background task limit on active tasks only - #600

Open
blueberrycongee wants to merge 1 commit into
OpenBMB:mainfrom
blueberrycongee:fix/background-task-concurrency
Open

blueberrycongee wants to merge 1 commit into
OpenBMB:mainfrom
blueberrycongee:fix/background-task-concurrency

Conversation

@blueberrycongee

Copy link
Copy Markdown
Contributor

问题

后台任务原先通过 entries.size 判断是否达到默认 32 个任务的上限,但已结束任务也保留在注册表中。因此,累计创建 32 个任务后,即使没有任务正在运行,也无法继续启动新任务。

修改

启动任务时,只统计 pendingrunning 状态的任务。

已完成、失败和取消的任务不再占用并发名额,历史记录及保留的输出仍可查询。取消请求不会立即释放名额:任务保持 running,直到进程退出后才进入终态,避免提前放入新任务。

直接根据任务状态计算并发数,不新增计数器,避免计数与状态不同步。

验证

相关测试 11/11 通过,覆盖:

  • 达到并发上限时拒绝新任务
  • 成功、失败和取消后复用名额
  • 取消等待期间继续占用名额
  • 复用名额后仍可查询历史状态及输出
  • 默认配置下顺序执行 33 个真实任务

本地验证使用 Node 24,尚未在项目要求的 Node 22 上复验。

取舍

每次启动需要遍历历史任务,复杂度为 O(n)。历史记录及输出继续保留,内存占用也会随历史增长;历史清理或持久化策略不在本次修改范围内。

Co-authored-by: WUU Agent <305930189+wuu-agent[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant