v0.0.53: устойчивость к битым файлам — воркер не падает, битые пропускаются, остальные обрабатываются
Deploy drhider / validate (push) Canceled after 0s
Deploy drhider / validate (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# 2026-08-20 — Устойчивость к битым файлам (v0.0.53)
|
||||
|
||||
## Root cause (найден по логу /tmp/drhider.log)
|
||||
SSE "connection failed" при обработке НЕ был обрывом шлюза. Воркер падал целиком:
|
||||
```
|
||||
worker: exception: PdfminerException(PDFSyntaxError('No /Root object! - Is this really a PDF?'))
|
||||
```
|
||||
на битом PDF (миниатюра 142 байта). Исключение в `extract_text` не было обёрнуто
|
||||
по-файлово → воркер ронялся → SSE слал `error` → фронт показывал "SSE connection failed".
|
||||
|
||||
## Фикс (drhider/obfuscator.py)
|
||||
Проход 1: `extract_text` обёрнут в try/except. При ошибке файл добавляется в
|
||||
`skipped`, логируется warning, файл пропускается, остальные обрабатываются.
|
||||
Проход 2: файлы из `skipped` пропускаются (не попадают в результат).
|
||||
|
||||
Проверено на flat/ (10 файлов: 5 валидных + 5 битых миниатюр):
|
||||
- битые PDF/docx пропущены (PDFSyntaxError/BadZipFile), валидные 5 → в zip.
|
||||
- воркер не падает, complete доходит.
|
||||
|
||||
## Примечание
|
||||
Миниатюры 54-142 B в /mnt/y/T/flat — НЕ валидные PDF/docx (мусор из корзины).
|
||||
Их можно удалить из тестового набора (или оставить как кейс устойчивости).
|
||||
Reference in New Issue
Block a user