Files
transcriber/tasks/items/stalled-pipeline-metric.md
T
av 8739b18a9f tasks: очередь расставлена от базы к деталям
- порядок беклога и роадмапа назначен слоями: проверки, которым можно
  верить → долги входа → владелец записи и контракт API → конвейер под
  тестами → приложение и возможности поверх; у каждого движения записана
  причина;
- заведены восемь задач под пункты «Завершения», которых не закрывала ни
  одна запись, — цель any-audio-source была без задач вовсе;
- у четырёх задач сняты критерии, требовавшие того, что делает задача ниже
  по очереди; исправлены ссылки на несуществующий repo/sqlite и на
  отменённую разведку об очереди.
2026-08-12 20:48:53 +03:00

2.8 KiB

Показывать метрикой задачу, застрявшую в состоянии

  • Тип: feature
  • Категория: Очередь — Признак вставшего конвейера — вторая половина той же работы.
  • Зачем: Вставший конвейер неотличим от простоя: возраст задачи в состоянии не считается, и очередь без движения выглядит как отсутствие работы.
  • Теги: goal:service-observability

Двигает пункт 1 «Завершения» цели: по метрикам видно, что конвейер встал, и это отличимо от «работы нет».

Сегодня метрики считают события — принято, распознано, отказано, — а состояние очереди не считает ничто. Пустая очередь и очередь, где десять задач висят третий час, дают одинаковый нулевой прирост счётчиков.

Затрагивает

  • internal/metrics — метрика числа задач по состояниям и возраста самой старой из них;
  • таблица задач: колонка состояния, по которой считаются числа, и отметка времени перехода, по которой считается возраст самой старой;
  • docs/architecture.md, раздел эксплуатации — что означает каждое число;
  • docs/database.md — частота съёма чисел.

Критерии приёмки

  • Число задач в каждом состоянии видно на /metrics. Оракул — тест: завести три задачи в разных состояниях и снять метрики.
  • Возраст самой старой задачи в состоянии виден числом и растёт, пока задача не сменила состояние. Оракул — тест на задаче с заведомо старой отметкой времени.
  • Съём чисел не мешает работе воркеров. Оракул — чтение кода: запрос идёт по индексу состояния и не берёт захват.

Рамки

Правило оповещения на этой метрике заводит задача owner-alerting — здесь только число. Порог «сколько считается застреванием» здесь не решается: он зависит от замеров цели long-recordings.