diff --git a/swh/loader/package/loader.py b/swh/loader/package/loader.py index 07b05e4e2cf78048ee3c5f23fa7a6e6621bdf35b..01b2c3ff08a12d2206e5dcf5b2c4a8a232fca940 100644 --- a/swh/loader/package/loader.py +++ b/swh/loader/package/loader.py @@ -659,9 +659,10 @@ class PackageLoader(BaseLoader, Generic[TPackageInfo]): packages_info.append((branch_name, p_info)) except Exception as e: load_exceptions.append(e) - sentry_sdk.capture_exception(e) error = f"Failed to get package info for version {version} of {self.origin.url}" - logger.exception(error) + if not isinstance(e, NotFound): + sentry_sdk.capture_exception(e) + logger.exception(error) errors.append(f"{error}: {e}") # Compute the ExtID of each of these packages diff --git a/swh/loader/package/tests/test_loader.py b/swh/loader/package/tests/test_loader.py index 441480d2b165d59df5b21ad48b2ea8c0088db128..48555cfe3db841b1281479efcdc0b2bb32be36dc 100644 --- a/swh/loader/package/tests/test_loader.py +++ b/swh/loader/package/tests/test_loader.py @@ -19,6 +19,7 @@ from swh.loader.core.loader import ( SENTRY_VISIT_TYPE_TAG_NAME, ) from swh.loader.core.utils import EMPTY_AUTHOR +from swh.loader.exception import NotFound from swh.loader.package.loader import BasePackageInfo, PackageLoader from swh.model.model import ( ExtID, @@ -742,3 +743,28 @@ def test_loader_with_duplicated_releases(swh_storage, requests_mock_datadir, moc == snapshot.branches[f"branch-v{i}".encode()] ) assert b"HEAD" in snapshot.branches + + +class StubPackageLoaderWithPackageInfoNotFound(StubPackageLoader): + def get_package_info(self, version): + if version == "v4.0": + raise NotFound("Package info not found") + else: + return super().get_package_info(version) + + +def test_loader_origin_with_package_info_not_found( + swh_storage, sentry_events, requests_mock_datadir +): + """NotFound exception for get_package_info should not be sent to sentry.""" + loader = StubPackageLoaderWithPackageInfoNotFound(swh_storage, ORIGIN_URL) + + assert loader.load() == { + "snapshot_id": "eec06c0cb03a0c19d513ad0e9a2b08f547ae7bd2", + "status": "eventful", + } + + assert loader.load_status() == {"status": "eventful"} + assert loader.visit_status() == "partial" + + assert not sentry_events