diff --git a/archivebox/services/archive_result_service.py b/archivebox/services/archive_result_service.py index 15151514..cec3be70 100644 --- a/archivebox/services/archive_result_service.py +++ b/archivebox/services/archive_result_service.py @@ -4,6 +4,7 @@ import asyncio import inspect import json import os +import signal import sys import time from collections import defaultdict @@ -240,6 +241,14 @@ def _should_update_snapshot_title(current_title: str, next_title: str, *, snapsh def _status_for_process_without_archive_result(event: ProcessCompletedEvent) -> str: if event.exit_code == PROCESS_EXIT_SKIPPED: return "skipped" + if event.exit_code in {128 + signal.SIGHUP, 128 + signal.SIGINT, 128 + signal.SIGTERM}: + # This fallback only runs when a snapshot hook exited before emitting a + # structured ArchiveResult. A polite shutdown signal means the runner + # was interrupted during ownership transfer, not that the extractor + # produced a durable negative result. Keep the hook queued so the next + # runner can retry the exact work item instead of sealing in a transient + # process-lifecycle failure. + return "queued" if event.exit_code != 0: return "failed" return "noresults" diff --git a/pyproject.toml b/pyproject.toml index cedea189..2d6f1e72 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,9 +79,9 @@ dependencies = [ ### Extractor dependencies (optional binaries detected at runtime via shutil.which) ### Binary/Package Management "abxbus==2.5.10", # EventBus API - "abxpkg>=1.11.236", # for: detecting, versioning, and installing binaries via apt/brew/pip/npm - "abx-plugins>=1.11.245", # shared ArchiveBox plugin package with Chrome/Puppeteer dependency wiring - "abx-dl>=1.11.232", # shared ArchiveBox downloader package with blocking install preflight + "abxpkg>=1.11.239", # for: detecting, versioning, and installing binaries via apt/brew/pip/npm + "abx-plugins>=1.11.248", # shared ArchiveBox plugin package with Chrome/Puppeteer dependency wiring + "abx-dl>=1.11.235", # shared ArchiveBox downloader package with blocking install preflight ### UUID7 backport for Python <3.14 "uuid7>=0.1.0; python_version < '3.14'", # provides the uuid_extensions module on Python 3.13 ]