You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
diagnose: на хосте без контейнера remnanode сенсор даёт ложный ✘ и ломает --json (docker inspect печатает пустую строку перед ошибкой) #27
На хосте, где контейнера remnanode нет (панель-бокс, CDN-origin с иначе названным контейнером), na-diagnose v4.0.1:
в текстовом режиме вместо ветки info "remnanode: контейнера нет" уходит в ложный критический пункт — итог ✔ 34 ▲ 0 ✘ 1 и совет «Запусти ⚡ оптимизатор и 🛡 защиту», хотя оба модуля только что применены:
✘ remnanode: статус '
absent' (не running) — node-агент лежит
в --json отдаёт невалидный JSON — сырой перевод строки внутри строкового значения:
$ na-diagnose --json | python3 -m json.tool
json.decoder.JSONDecodeError: Invalid control character at: line 1 column 789 (char 788)
т.е. ломается контракт «стабильный na-diagnose --json для мониторинга/панели» ровно на тех хостах, где мониторинг по нему и хочется собирать. На ноде с живым контейнером (remnanode_status":"running") JSON валиден.
Подстановка $(…) срезает только ХВОСТОВЫЕ переводы строки, поэтому значение становится "\nabsent": [[ "$RN_ST" == absent ]] ложно → bad; гард в json-ветке [[ -n "$rnst" ]] || rnst=absent тоже не срабатывает (строка непустая), и \n уезжает в printf '"remnanode_status":"%s"' как есть. rnrc с тем же шаблоном спасает регэксп ^[0-9]+$, поэтому симптом только у статуса.
Наблюдалось
2026-09-01, раскатка v4.0.1 на 8 хостов: панель-бокс (Debian 12, Docker 29.7.2) — оба симптома стабильно; 7 нод с контейнером — чисто. В v4.0 то же (пункт был в списке «косметика» с 31.08, но невалидный --json косметикой уже не назвать).
Предлагаемый фикс
Не смешивать stdout и код возврата, нормализовать пробелы и пустоту считать отсутствием — в обеих ветках:
Плюс в json-эмиттере пропускать строковые значения через экранирование (\n, ", \), чтобы любое будущее «сырое» значение не могло сломать документ. Тест: tests/ — стаб docker, который на inspect печатает \n и возвращает 1; ждём info-ветку и валидный JSON.
Activity
jestivald commentedon Sep 2, 2026
Исправлено в v4.1 (PR #42, merge 427b13f): https://github.com/jestivald/node-accelerator/releases/tag/v4.1 — разбор в CHANGELOG, секция v4.1.
diagnose: датчики меряют тот же срез, что и правила + честный --json …
merge v4.1-diagnose: #27 #30 #31 #32 #34 #35 #37 #38 #39 — датчики ме…