feat(observability): queued 行龄告警——目标池零 worker 的超龄排队行具名可观测(ADR-002 修订跟进单)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 43/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python, redis
- Domain
- backend, observability
Research direction
Start by reading reconcile_summary, engine_sync, flow_store, and capability_gate.runtime_pool_alive to follow existing polling, queued-row, and runtime-pool patterns. Then locate the console lifecycle and health/metrics entry points. Done means aged queued rows for an empty runtime pool produce a named warning, a gauge, and a health count, while live pools and fresh rows stay quiet and one failed poll does not stop later checks.
Written by the indexing model from the issue text.
Description
优先级 P2 · 依赖:无
基线 HEAD = 6f6fb862
Summary
Go 恢复生产可选 runtime(ADR-002 修订 2026-10-27)后,最后一处无防护的搁浅面:worker 停机窗口入队后、worker 一直没拉起——
- 受理面在场点名(
_admission_version_row→capability_gate.runtime_pool_alive)已于 2026-10-27 晚降级为具名 WARNING + 放行:worker 停机窗口内入队是合法运维模式(Console E2E chaos-wr 契约「停机不丢、拉起后消费」保护的对象),硬拒会打断该契约(实测:首版 422 令 chaos-wr 必红,Console E2Erun 40467384887)。 - #300 门对空池 fail-open(发布面兼容取舍)。
flow_worker投递侧只保证「投递失败可观测」——「投递成功无人消费」现状零信号。
⇒ 组合结果:start 放行(合法)+ worker 永不拉起(无人消费)= queued 行静默滞留,唯有人盯队列才发现。三处设计决策均正确,缺的是滞留本身的可观测。
影响
- runtime=go 部署只装了 console 没拉 go_worker → go 流程全部入队后静默 pending;
- worker 全灭窗口(崩溃/误停)超过运维预期 → 滞留无告警,靠用户投诉发现。
建议
console 集群档生命周期内起周期巡检线程(对齐 reconcile_summary/engine_sync 的「降级必须可观测」先例):
- 每 N 秒(缺省 300,env
PLAITA_QUEUED_AGE_WATCH_INTERVAL)扫flow_store中status=queued的占位行(plaita#273 形状),按目标 runtime 分组统计「排队时长 > 阈值」(缺省 900s,envPLAITA_QUEUED_AGE_WARN_SECONDS)的行数; - 超龄组逐 runtime 调
capability_gate.runtime_pool_alive(redis, runtime):池空 → 具名 WARNING(点名 runtime/超龄行数/最老行龄)+ 指标暴露(metrics 端新增 gauge,如plaita_queued_aged_rows{runtime=...})+/health计数(对齐 engine_sync degraded 形状); - 池有活 worker(含不可分类旧 build 条目——与点名同取舍)→ 只计数不告警(worker 在消化,排队是正常态);
- 阈值内不告警(停机窗口短于阈值属正常 chaos 语义)。
验收条件:
- 注入「超龄 queued 行 × go 池空」→ WARNING 具名(runtime/行数/最老行龄)+ metrics gauge > 0;
- go 池有活 worker(可分类 manifest)→ 无告警;
- 新鲜 queued 行(< 阈值)→ 无告警;
- 本地档(engine backend 进程内执行,无 queued 态)零影响;
- 巡检线程异常不退出(单轮失败隔离,同 reconcile 先例)。
边界
- 不做自动重派/自动拉起(运维动作仍人工);
- 不动 chaos-wr 契约与受理面放行语义;
- suspended 行的搁浅(等唤醒类)已有订阅超时兜底(#56 系),不在本单。
- Dominant language
- Python
- Stars
- 0
- Forks
- 1
- Avg merge
- 1h 52m
- Merged PRs (30d)
- 15
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from jeffkit/plaita
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 45/100
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 56/100
Maintainers usually reply within 1 day
-
enhancement
Difficulty 4/5 1-2 days Newbie friendliness 43/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
namespace operations
Difficulty 1/5 Under an hour Newbie friendliness 65/100
EclipseFdn/open-vsx.org#15057 ·
Maintainers usually reply within 1 day
-
Mission statement: why this is free, in the README, Why This Exists and the wiki HomePossibly taken @ChiefGyk3D claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ChiefGyk3D/Clouds-Against-Humanity#348 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
vllm-project/vime#508 ·
Maintainers usually reply within 4 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day