Изъян в собственном критерии приёмки #2950. Я записал: «в логе второго деплоя
видна строка ожидания лока — то есть он реально ждал первого». Но flock при
успешном захвате молчит, и такой строки не бывает. Критерий был неизмеримым:
отличить «второй дождался первого» от «они просто разошлись по времени» нечем.
Теперь сначала неблокирующая попытка:
флаг свободен → «докер-лок свободен, взят сразу»
флаг занят → «докер-лок занят соседним деплоем, жду (до 900с)…»
потом «докер-лок получен через Nс ожидания»
не дождались → прежнее сообщение с подсказкой про fuser, выход 1
Длительность печатается не для красоты: без неё непонятно, ждал деплой две
секунды или четверть часа, а это разные диагнозы — разминулись случайно или
взаимное исключение несёт реальную нагрузку.
Гейт дополнен тремя проверками (flock -n, факт ожидания, длительность).
Мутация «вернуть слепой блокирующий вызов» краснит его: 1 failed, контроль
9 passed rc=0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>