From Чайка:
race condition при поднятии интерфейса wan во время старта podkop
суть проблемы:
вызов /usr/bin/podkop reload не завершает и не ждет завершения предыдущего вызова /usr/bin/podkop start
это приводит к нежелательным эффектам вроде удаления рабочих файлов и либо ошибкам в логах либо неудачному запуску (в том числе второму)
предлагаемое решение:
использование блокировки в /usr/bin/podkop:
вызов
lock "$LOCK_FILE"
в начале start_main и stop_main
и
lock -u "$LOCK_FILE"
в конце этих функций
это даст возможность завершить выполнение start перед reload
ниже выжимка из лога
первый раз подкоп стартует до поднятия wan
потом триггер bad wan стопит и запускает podkop по новой
но при этом старый процесс подкопа не прибит, он продолжает собирать конфиг
но параллельный рестарт видимо затирает временные файлы, что приводит к фатальной ошибке и остановке первого инстанса подкопа
дальше второй инстанс все делает без ошибок, но фатальная проблема первого остается в логе и светится в интерфейсе
увеличив время задержки, мы дали первому инстансу нормально запуститься и ошибка ушла
Sat Jan 17 17:42:06 2026 user.notice podkop: [info] Starting podkop
...
Sat Jan 17 17:42:10 2026 daemon.notice netifd: Interface 'wan' is now up
...
Sat Jan 17 17:42:14 2026 user.notice podkop: [info] Podkop reload
Sat Jan 17 17:42:14 2026 user.notice podkop: [info] Stopping the podkop
...
Sat Jan 17 17:42:14 2026 daemon.err podkop[3704]: jq: error: Could not open file /tmp/sing-box/rulesets/main-user-domains-ruleset.json: No such file or directory
...
Sat Jan 17 17:42:14 2026 user.notice podkop: [info] Stop sing-box
...
Sat Jan 17 17:42:15 2026 user.notice podkop: [info] Starting podkop
Sat Jan 17 17:42:15 2026 user.notice podkop: [info] Check Requirements
...
Sat Jan 17 17:42:15 2026 user.notice podkop: [debug] Save sing-box temporary config to /tmp/tmp.ngKcFf
...
Sat Jan 17 17:42:15 2026 user.notice podkop: [fatal] Sing-box configuration /tmp/tmp.ngKcFf is invalid. Aborted.
...
Sat Jan 17 17:42:52 2026 user.notice podkop: [debug] Save sing-box temporary config to /tmp/tmp.MjKEch
Sat Jan 17 17:42:52 2026 user.notice podkop: [debug] Current sing-box config hash: 875689615aba301a20b0789465b2f9d3
Sat Jan 17 17:42:52 2026 user.notice podkop: [debug] Temporary sing-box config hash: 875689615aba301a20b0789465b2f9d3
Sat Jan 17 17:42:52 2026 user.notice podkop: [info] sing-box configuration is unchanged
...
Sat Jan 17 17:42:53 2026 user.notice podkop: [info] Nice
Sat Jan 17 17:42:53 2026 user.notice podkop: [info] 🔄 Starting lists update...
...
Sat Jan 17 17:42:55 2026 user.notice podkop: [info] ✅ Lists update completed successfully
From Чайка:
race condition при поднятии интерфейса wan во время старта podkop
суть проблемы:
вызов /usr/bin/podkop reload не завершает и не ждет завершения предыдущего вызова /usr/bin/podkop start
это приводит к нежелательным эффектам вроде удаления рабочих файлов и либо ошибкам в логах либо неудачному запуску (в том числе второму)
предлагаемое решение:
использование блокировки в /usr/bin/podkop:
вызов
lock "$LOCK_FILE"
в начале start_main и stop_main
и
lock -u "$LOCK_FILE"
в конце этих функций
это даст возможность завершить выполнение start перед reload
ниже выжимка из лога
первый раз подкоп стартует до поднятия wan
потом триггер bad wan стопит и запускает podkop по новой
но при этом старый процесс подкопа не прибит, он продолжает собирать конфиг
но параллельный рестарт видимо затирает временные файлы, что приводит к фатальной ошибке и остановке первого инстанса подкопа
дальше второй инстанс все делает без ошибок, но фатальная проблема первого остается в логе и светится в интерфейсе
увеличив время задержки, мы дали первому инстансу нормально запуститься и ошибка ушла