docs(adr): у правила позиции назван мягкий худший исход
Зачем: горячее ревью ADR 0009 нашло случай, который читатель найдёт сам — работник, кончивший позже, ставит позицию по своему последнему дню и может отодвинуть её назад. Что: случай назван вместе с ценой (часть дней переигрывается, и это дешевле дыры); заодно поправлен порядок слов там, где даг зовёт генератор. Проверка: make config-test зелёный. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,7 @@
|
|||||||
через `TriggerDagRunOperator`, дожидаясь его завершения. Снят с паузы — стенд
|
через `TriggerDagRunOperator`, дожидаясь его завершения. Снят с паузы — стенд
|
||||||
живёт день за днём; поставлен на паузу — мир встал на границе модельных суток.
|
живёт день за днём; поставлен на паузу — мир встал на границе модельных суток.
|
||||||
|
|
||||||
Генератор задача зовёт `DockerOperator`: поднимает образ
|
Генератор задача зовёт через `DockerOperator`: тот поднимает образ
|
||||||
`clickstream-generator:local` — тот самый канонический контейнер, внутри
|
`clickstream-generator:local` — тот самый канонический контейнер, внутри
|
||||||
которого [спека генератора](../specs/2026-08-01-generator.md) обещает побайтовую
|
которого [спека генератора](../specs/2026-08-01-generator.md) обещает побайтовую
|
||||||
воспроизводимость, — в сети стенда, командой `batch` или `live`.
|
воспроизводимость, — в сети стенда, командой `batch` или `live`.
|
||||||
@@ -75,12 +75,18 @@
|
|||||||
и выключатель. Это [ADR 0003](0003-dag-run-state.md) в действии: зелёный конец
|
и выключатель. Это [ADR 0003](0003-dag-run-state.md) в действии: зелёный конец
|
||||||
графа не должен переживать отказ выше.
|
графа не должен переживать отказ выше.
|
||||||
|
|
||||||
**Позиция ставится, а не увеличивается.** Правило дешевле сторожа. Если
|
**Позиция ставится, а не увеличивается.** Правило дешевле сторожа. Если прогон
|
||||||
автоматика прилетит поверх ручного прогона, худшее — день сыгран дважды: номера
|
выключателя наложится на ручной, худшее — день сыгран дважды: номера событий
|
||||||
событий детерминированы, повтор схлопнет `ReplacingMergeTree`, а позиция
|
детерминированы, повтор схлопнет `ReplacingMergeTree`, а позиция останется
|
||||||
останется верной. Увеличение на единицу в том же случае молча проглотило бы
|
верной. Увеличение на единицу в том же случае молча проглотило бы день, и мир
|
||||||
день, и мир получил бы дыру, которую никто не заметит. Ни пул как мьютекс, ни
|
получил бы дыру, которую никто не заметит. Ни пул как мьютекс, ни проверка «а не
|
||||||
проверка «а не идёт ли другой прогон» после этого не нужны.
|
идёт ли другой прогон» после этого не нужны.
|
||||||
|
|
||||||
|
Худший исход у правила всё-таки есть, и он мягкий: работник, кончивший позже,
|
||||||
|
ставит позицию по своему последнему дню и может отодвинуть её назад — так
|
||||||
|
бывает, если долгий живой день закончится после разгона на три дня вперёд.
|
||||||
|
Тогда часть дней переигрывается. Это дешевле дыры: переигранный день склеится,
|
||||||
|
пропущенный не найдётся никогда.
|
||||||
|
|
||||||
**Плата — сокет докера внутри Airflow.** Доступ к нему равен праву root на
|
**Плата — сокет докера внутри Airflow.** Доступ к нему равен праву root на
|
||||||
машине, и пользователю `airflow` он открывается через GID группы `docker`,
|
машине, и пользователю `airflow` он открывается через GID группы `docker`,
|
||||||
|
|||||||
Reference in New Issue
Block a user