diff --git a/swh/loader/core/loader.py b/swh/loader/core/loader.py --- a/swh/loader/core/loader.py +++ b/swh/loader/core/loader.py @@ -18,12 +18,14 @@ SkippedContent, Directory, Origin, + OriginVisitStatus, Revision, Release, Sha1Git, Snapshot, ) from swh.storage import get_storage +from swh.storage.utils import now class BaseLoader(config.SWHConfig, metaclass=ABCMeta): @@ -304,24 +306,28 @@ break self.store_metadata() - self.storage.origin_visit_update( - self.origin.url, - self.visit.visit, - self.visit_status(), + visit_status = OriginVisitStatus( + origin=self.origin.url, + visit=self.visit.visit, + date=now(), + status=self.visit_status(), snapshot=self.loaded_snapshot_id, ) + self.storage.origin_visit_status_add([visit_status]) self.post_load() except Exception: self.log.exception( "Loading failure, updating to `partial` status", extra={"swh_task_args": args, "swh_task_kwargs": kwargs,}, ) - self.storage.origin_visit_update( - self.origin.url, - self.visit.visit, - "partial", + visit_status = OriginVisitStatus( + origin=self.origin.url, + visit=self.visit.visit, + date=now(), + status="partial", snapshot=self.loaded_snapshot_id, ) + self.storage.origin_visit_status_add([visit_status]) self.post_load(success=False) return {"status": "failed"} finally: diff --git a/swh/loader/package/loader.py b/swh/loader/package/loader.py --- a/swh/loader/package/loader.py +++ b/swh/loader/package/loader.py @@ -27,8 +27,10 @@ TargetType, Snapshot, Origin, + OriginVisitStatus, ) from swh.storage import get_storage +from swh.storage.utils import now from swh.storage.algos.snapshot import snapshot_get_all_branches from swh.loader.package.utils import download @@ -280,18 +282,23 @@ """ self.storage.flush() - self.storage.origin_visit_update( + + snapshot_id: Optional[bytes] = None + if snapshot and snapshot.id: # to prevent the snapshot.id to b"" + snapshot_id = snapshot.id + visit_status = OriginVisitStatus( origin=self.url, - visit_id=visit.visit, + visit=visit.visit, + date=now(), status=status_visit, - snapshot=snapshot and snapshot.id, + snapshot=snapshot_id, ) - + self.storage.origin_visit_status_add([visit_status]) result: Dict[str, Any] = { "status": status_load, } - if snapshot: - result["snapshot_id"] = hash_to_hex(snapshot.id) + if snapshot_id: + result["snapshot_id"] = hash_to_hex(snapshot_id) return result # Prepare origin and origin_visit