Skip to content

fix(config): ARQ_EMBEDDED_WORKER 改为 env 权威——DB 种子值不得拉起 API 内嵌 worker - #509

Merged
Yanyutin753 merged 1 commit into
developfrom
fix/arq-embedded-worker-env-authoritative
Sep 8, 2026
Merged

fix(config): ARQ_EMBEDDED_WORKER 改为 env 权威——DB 种子值不得拉起 API 内嵌 worker#509
Yanyutin753 merged 1 commit into
developfrom
fix/arq-embedded-worker-env-authoritative

Conversation

@Yanyutin753

Copy link
Copy Markdown
Owner

Summary

ARQ_EMBEDDED_WORKER 加入 RESTART_REQUIRED_SETTINGS(env-authoritative 白名单)。worker 拆分部署(#507)实测失效:settings 加载顺序是 DB > env,system_settings 的历史种子值(system:init 写入 true)覆盖了 k8s/compose 里的 env=false,API 内嵌 worker 照常启动,与独立 worker Deployment 双消费同一 arq 队列

问题复现(2026-09-09 staging)

  • staging 已部署 worker 拆分(API ARQ_EMBEDDED_WORKER=false + lambchat-staging-worker Deployment)
  • API pod 启动日志仍有 Embedded arq worker started,提交对话任务后被 API pod 消费执行(worker pod 空转)
  • pod env 确认 falsesystem_settings 里存在种子行 value: true → DB 覆盖 env

Fix

  • 该开关是部署拓扑决策(哪个进程跑 worker),归入连接类白名单,env/compose 唯一权威;DB 值仅告警不生效
  • 运行时面板修改(refresh_settings)语义不变
  • 全新安装:init_from_env 会把 env 值种进 DB,UI 展示与实际一致

Testing

  • RED:test_arq_embedded_worker_is_env_authoritative(DB=true + env=false → 保持 false),修复前失败、修复后通过
  • tests/kernel/config/ 65 passed;tests/infra/task/ + tests/infra/settings/ 311 passed
  • ruff check / format 通过

worker 拆分部署(k8s/compose 设 env=false + 独立 worker Deployment)实测失效:
settings 加载顺序是 DB > env,system_settings 里的历史种子值(system:init 写入
true)覆盖 env,API 内嵌 worker 照常启动、与独立 worker 双消费同一队列。

归入 RESTART_REQUIRED_SETTINGS(连接类白名单)——该开关是部署拓扑决策,
本就该由 env/compose 唯一决定;运行时面板修改语义不变。
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