[FEATURE] Make import more robust by introducing timeout, recovery and watchdog #171

Merged
Dirk Koritnik merged 1 commit from bugfix/13000_import_reporting into main 2026-08-13 09:21:00 +00:00

If upstream can't keep up with demand and stops answering requests,
timeouts for every request are imposed to avoid a stuck forever import run.
Additionally, retries are available so a failed request can recover.
The watchdog will keep an eye on the total runtime of an import and forcefully
terminate it, should it exceed its allocated budget. This abort will still enable
to persist collected data to database and write the log.
The log tells about those situations, should they occure, and so does the backend
module with a summary.

Extension configuration will provide values for the guard rails, with a hardcoded
fallback in place.

The existing FetchCache has been promoted from a runtime cache to a persitent one
with a livetime of currently 15 minutes, which will improve performance for imports
executed in short timely distance to each other. The livetime can be adjusted per
import within the import configuration.

Last but not least, import runs received output to give a sign of activity, the default
counting down processed root objects, and with -vvv a detailed list of retrieved URLs.

Resolves: https://redmine.werkraum-media.de/issues/13000
Assisted-by: Claude Opus 5 noreply@anthropic.com

If upstream can't keep up with demand and stops answering requests, timeouts for every request are imposed to avoid a stuck forever import run. Additionally, retries are available so a failed request can recover. The watchdog will keep an eye on the total runtime of an import and forcefully terminate it, should it exceed its allocated budget. This abort will still enable to persist collected data to database and write the log. The log tells about those situations, should they occure, and so does the backend module with a summary. Extension configuration will provide values for the guard rails, with a hardcoded fallback in place. The existing FetchCache has been promoted from a runtime cache to a persitent one with a livetime of currently 15 minutes, which will improve performance for imports executed in short timely distance to each other. The livetime can be adjusted per import within the import configuration. Last but not least, import runs received output to give a sign of activity, the default counting down processed root objects, and with `-vvv` a detailed list of retrieved URLs. Resolves: https://redmine.werkraum-media.de/issues/13000 Assisted-by: Claude Opus 5 noreply@anthropic.com
[FEATURE] Make import more robust by introducing timeout, recovery and watchdog
All checks were successful
CI / base-qa (pull_request) Successful in 30s
CI / advanced-qa (82, ^13.4) (pull_request) Successful in 4m33s
CI / advanced-qa (82, ^14) (pull_request) Successful in 5m1s
CI / advanced-qa (83, ^13.4) (pull_request) Successful in 4m31s
CI / advanced-qa (83, ^14) (pull_request) Successful in 4m52s
CI / advanced-qa (84, ^13.4) (pull_request) Successful in 4m37s
CI / advanced-qa (84, ^14) (pull_request) Successful in 4m53s
CI / advanced-qa (85, ^13.4) (pull_request) Successful in 4m39s
CI / advanced-qa (85, ^14) (pull_request) Successful in 4m41s
0c37dc6b47
If upstream can't keep up with demand and stops answering requests,
timeouts for every request are imposed to avoid a stuck forever import run.
Additionally, retries are available so a failed request can recover.
The watchdog will keep an eye on the total runtime of an import and forcefully
terminate it, should it exceed its allocated budget. This abort will still enable
to persist collected data to database and write the log.
The log tells about those situations, should they occure, and so does the backend
module with a summary.

Extension configuration will provide values for the guard rails, with a hardcoded
fallback in place.

The existing FetchCache has been promoted from a runtime cache to a persitent one
with a livetime of currently 15 minutes, which will improve performance for imports
executed in short timely distance to each other. The livetime can be adjusted per
import within the import configuration.

Last but not least, import runs received output to give a sign of activity, the default
counting down processed root objects, and with `-vvv` a detailed list of retrieved URLs.

Resolves: https://redmine.werkraum-media.de/issues/13000
Assisted-by: Claude Opus 5 noreply@anthropic.com
Anja Leichsenring force-pushed bugfix/13000_import_reporting from 0c37dc6b47
All checks were successful
CI / base-qa (pull_request) Successful in 30s
CI / advanced-qa (82, ^13.4) (pull_request) Successful in 4m33s
CI / advanced-qa (82, ^14) (pull_request) Successful in 5m1s
CI / advanced-qa (83, ^13.4) (pull_request) Successful in 4m31s
CI / advanced-qa (83, ^14) (pull_request) Successful in 4m52s
CI / advanced-qa (84, ^13.4) (pull_request) Successful in 4m37s
CI / advanced-qa (84, ^14) (pull_request) Successful in 4m53s
CI / advanced-qa (85, ^13.4) (pull_request) Successful in 4m39s
CI / advanced-qa (85, ^14) (pull_request) Successful in 4m41s
to 4cc9db0ef6
All checks were successful
CI / base-qa (pull_request) Successful in 27s
CI / advanced-qa (82, ^13.4) (pull_request) Successful in 4m54s
CI / advanced-qa (82, ^14) (pull_request) Successful in 5m22s
CI / advanced-qa (83, ^13.4) (pull_request) Successful in 4m47s
CI / advanced-qa (83, ^14) (pull_request) Successful in 5m6s
CI / advanced-qa (84, ^13.4) (pull_request) Successful in 4m58s
CI / advanced-qa (84, ^14) (pull_request) Successful in 5m6s
CI / advanced-qa (85, ^13.4) (pull_request) Successful in 4m53s
CI / advanced-qa (85, ^14) (pull_request) Successful in 4m58s
CI / base-qa (push) Successful in 21s
CI / advanced-qa (82, ^13.4) (push) Successful in 4m49s
CI / advanced-qa (82, ^14) (push) Successful in 5m11s
CI / advanced-qa (83, ^13.4) (push) Successful in 4m45s
CI / advanced-qa (83, ^14) (push) Successful in 5m6s
CI / advanced-qa (84, ^13.4) (push) Successful in 4m55s
CI / advanced-qa (84, ^14) (push) Successful in 5m12s
CI / advanced-qa (85, ^13.4) (push) Successful in 4m43s
CI / advanced-qa (85, ^14) (push) Successful in 5m2s
2026-08-13 08:49:28 +00:00
Compare
Dirk Koritnik deleted branch bugfix/13000_import_reporting 2026-08-13 09:21:00 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
typo3/thuecat!171
No description provided.