5.6 KiB
PidTor 500/503 — НАЙДЕНО И ИСПРАВЛЕНО
Дата: 2026-09-22 Статус: ✅ ИСПРАВЛЕНО. Все фильмы → HTTP 200 Связано: personal/tech/lampac-torrserver, personal/tech/lampac-deployment
Симптом (Alex)
«если пункт "торренты" выбрать при просмотре - то там пусто»
🔴 ПРИЧИНА: мой же неправильный фикс. Локальный JacRed отдаёт формат без info
Доказательство сырьём
НАШ JacRed (redapi=http://127.0.0.1:9118), поля ответа:
['Category','Details','MagnetUri','Peers','PublishDate','Seeders','Size','Title','Tracker']
^^^ info НЕТ!
jac.red (внешний), поля ответа:
[..., 'ffprobe', 'info', 'languages'] ← info ЕСТЬ
info = {"quality":480, "voices":["Дубляж"], "sizeName":"2.02 GB",
"name":"Хамнет: История, вдохновившая «Гамлета»", "relasted":2025}
Где падает (PidTor/Controller.cs:97)
string mediainfo = torrent.info.sizeName ?? string.Empty;
// ^^^^^^^^^^^^^^ info == null в ответе локального JacRed
// → NullReferenceException → HTTP 500 → закэшировался как 503
❌ Что я сделал НЕПРАВИЛЬНО
Переключил PidTor.redapi с http://jac.red на http://127.0.0.1:9118
(«локальный стабильнее»). Это сломало PidTor полностью:
было (redapi=jac.red): часть фильмов работала, часть 503 (кэш таймаутов)
стало (redapi=локальный): ВСЕ фильмы → 500 (NPE на info)
Локальный JacRed несовместим по формату с PidTor: отдаёт урезанный
ответ без info, хотя модель PidTor (Model.cs) требует torrent.info.sizeName.
✅ ФИКС
config-module/init.conf:
"PidTor": {
"enable": true,
"redapi": "http://jac.red" ← вернуть внешний, он отдаёт ПОЛНЫЙ формат
}
Убрал min_sid: 3 (в стоке 15; мой 3 тоже мог резать выдачу).
Проверка после фикса
Гамнет 2025 → HTTP 200, раздач ✅
Горничная 2025 → HTTP 200, раздач ✅
Я ругаюсь 2025 → HTTP 200, раздач ✅
F1 2025 → HTTP 200, раздач ✅
Духless 2012 → HTTP 200, раздач ✅
Матрица 1999 → HTTP 200, раздач ✅
До фикса: F1/Горничная/Я ругаюсь → 503, Духless → 500.
🔴 Что ещё выяснено попутно (важно для будущих сессий)
Кэш 503 (X-Invoke-Cache: HIT) — симптом, не причина
"cache": { "type": "fdb", "memExtend": true, "extend": 2700 } ← 45 минут
Заголовок X-Invoke-Cache: HIT + время ответа 0.0015s = ответ из кэша.
При чистке cache/fdb/ 503 сменился на честный 500 — то есть кэш маскировал
настоящую ошибку. Сброс кэша обязателен при диагностике — иначе видишь
старый закэшированный отказ и делаешь ложные выводы.
enabled: false у ВСЕХ модулей — это НОРМА
PidTor: enable=True, enabled=False
И то же у всех 86 модулей (Filmix, HDVB, Kinobase, ...)
⚠️ enabled — служебное поле (расписание/workinghours), НЕ выключатель.
Смотреть только enable. Поле не причина отказов.
Кэш PidTor: ключ = все параметры
pidtor:{title}:{original_title}:{year}:{original_language}:{serial} 40 минут
Запрос F1 без года → 200, с годом → 503. Разные ключи, разный результат.
Проверять надо ТЕМ ЖЕ набором параметров, что посылает клиент.
Два разных API JacRed
/api/v1.0/torrents?search=... ← я использовал, работает
/api/v2.0/indexers/all/results?title=... ← это зовёт PidTor
⚠️ Проверять надо тот маршрут, которым ходит модуль, а не удобный.
Питфоллы, стоившие времени
- 🔴 Сначала смотреть, что модуль ждёт, потом «улучшать». Я переключил redapi ради «стабильности», не проверив совместимость формата → поломал.
- 🔴 503 = кэш, 500 = реальная ошибка. Свежий запрос после сброса кэша даёт честный код.
- 🔴 Лог lampac не показывает исключения PidTor —
docker logsпуст. Приходится читать исходник модуля (Controller.cs). - 🔴
docker exec lampac python3— НЕ работает (python3 нет в образе). Парсить JSON ламповых конфигов — скриптом снаружи черезdocker cp. - 🔴 Порт 9085 TorrServer снаружи закрыт — только
/ts/через 9118.