Skip to content

Race condition restat #360

@itdoginfo

Description

@itdoginfo

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions