tasks: очередь расставлена от базы к деталям
- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# ✨ Показывать метрикой задачу, застрявшую в состоянии
|
||||
|
||||
- **Тип:** feature
|
||||
- **Категория:** Очередь — Признак вставшего конвейера — вторая половина той же работы.
|
||||
- **Зачем:** Вставший конвейер неотличим от простоя: возраст задачи в состоянии не считается, и очередь без движения выглядит как отсутствие работы.
|
||||
- **Теги:** goal:service-observability
|
||||
|
||||
Двигает пункт 1 «Завершения» цели: по метрикам видно, что конвейер встал, и это
|
||||
отличимо от «работы нет».
|
||||
|
||||
Сегодня метрики считают события — принято, распознано, отказано, — а состояние
|
||||
очереди не считает ничто. Пустая очередь и очередь, где десять задач висят третий
|
||||
час, дают одинаковый нулевой прирост счётчиков.
|
||||
|
||||
## Затрагивает
|
||||
|
||||
- `internal/metrics` — метрика числа задач по состояниям и возраста самой старой
|
||||
из них;
|
||||
- таблица задач: колонка состояния, по которой считаются числа, и отметка
|
||||
времени перехода, по которой считается возраст самой старой;
|
||||
- `docs/architecture.md`, раздел эксплуатации — что означает каждое число;
|
||||
- `docs/database.md` — частота съёма чисел.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- Число задач в каждом состоянии видно на `/metrics`. Оракул — тест: завести три
|
||||
задачи в разных состояниях и снять метрики.
|
||||
- Возраст самой старой задачи в состоянии виден числом и растёт, пока задача не
|
||||
сменила состояние. Оракул — тест на задаче с заведомо старой отметкой времени.
|
||||
- Съём чисел не мешает работе воркеров. Оракул — чтение кода: запрос идёт по
|
||||
индексу состояния и не берёт захват.
|
||||
|
||||
## Рамки
|
||||
|
||||
Правило оповещения на этой метрике заводит задача `owner-alerting` — здесь
|
||||
только число. Порог «сколько считается застреванием» здесь не решается: он
|
||||
зависит от замеров цели `long-recordings`.
|
||||
Reference in New Issue
Block a user