--once Modus gibt Exit-Code 0 zurück auch wenn Dateien fehlschlagen #2

Closed
opened 2026-04-09 01:41:58 +02:00 by clawdbot_dh · 1 comment
Member

Problem

Der --once-Modus endet immer mit Exit-Code 0, auch wenn alle zu verarbeitenden PDFs fehlgeschlagen sind und im error/-Verzeichnis gelandet sind.

Auswirkung

Skripte oder CI-Pipelines, die --once nutzen um PDFs zu verarbeiten, können nicht erkennen ob die Verarbeitung erfolgreich war:

python -m pdf_ocr_hotfolder --config config.toml --once
echo $?  # immer 0, auch wenn alle PDFs fehlgeschlagen!

Erwartetes Verhalten

Szenario Exit-Code
Alle PDFs erfolgreich 0
Einige PDFs fehlgeschlagen 1
Alle PDFs fehlgeschlagen 1
Keine PDFs vorhanden 0

Mögliche Lösung

# In __main__.py, once-Block:
service._ensure_dirs()
service._scan_existing()
service._executor.shutdown(wait=True)
# Ergebnis aus ProcessResults auswerten
return 1 if any_errors else 0

Dazu müsste HotfolderService die Ergebnisse tracken (z.B. self._error_count).

Entdeckt bei

Lokaler Test-Durchlauf 2026-04-08

## Problem Der `--once`-Modus endet immer mit Exit-Code `0`, auch wenn alle zu verarbeitenden PDFs fehlgeschlagen sind und im `error/`-Verzeichnis gelandet sind. ## Auswirkung Skripte oder CI-Pipelines, die `--once` nutzen um PDFs zu verarbeiten, können nicht erkennen ob die Verarbeitung erfolgreich war: ```bash python -m pdf_ocr_hotfolder --config config.toml --once echo $? # immer 0, auch wenn alle PDFs fehlgeschlagen! ``` ## Erwartetes Verhalten | Szenario | Exit-Code | |---|---| | Alle PDFs erfolgreich | `0` | | Einige PDFs fehlgeschlagen | `1` | | Alle PDFs fehlgeschlagen | `1` | | Keine PDFs vorhanden | `0` | ## Mögliche Lösung ```python # In __main__.py, once-Block: service._ensure_dirs() service._scan_existing() service._executor.shutdown(wait=True) # Ergebnis aus ProcessResults auswerten return 1 if any_errors else 0 ``` Dazu müsste `HotfolderService` die Ergebnisse tracken (z.B. `self._error_count`). ## Entdeckt bei Lokaler Test-Durchlauf 2026-04-08
Owner

Behoben in v0.2.1 (Commit 6f7cadf). Test-Szenarien sind in tests/test_preflight.py und tests/test_once_exit_code.py abgebildet (11 Tests, alle grün).

Behoben in v0.2.1 (Commit 6f7cadf). Test-Szenarien sind in `tests/test_preflight.py` und `tests/test_once_exit_code.py` abgebildet (11 Tests, alle grün).
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sonith_ug/pdf-ocr-hotfolder#2