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 @@ -119,13 +119,17 @@ """ return "" - def last_snapshot(self) -> Optional[Snapshot]: - """Retrieve the last snapshot + def last_snapshot(self, last_visit: Optional[Dict[str, Any]]) -> Optional[Snapshot]: + """Retrieve the last snapshot out of the last visit. """ + if not last_visit: + return None snapshot = None - visit = self.storage.origin_visit_get_latest(self.url, require_snapshot=True) - snapshot_id = None if not visit else visit.get("snapshot") + visit_status = self.storage.origin_visit_status_get_latest( + self.url, last_visit["visit"], require_snapshot=True, + ) + snapshot_id = None if not visit_status else visit_status.snapshot if snapshot_id is not None: snapshot_dict = snapshot_get_all_branches(self.storage, snapshot_id) if snapshot_dict: @@ -303,6 +307,9 @@ result["snapshot_id"] = hash_to_hex(snapshot_id) return result + # last visit if any + last_visit = self.storage.origin_visit_get_latest(self.url) + # Prepare origin and origin_visit origin = Origin(url=self.url) try: @@ -324,7 +331,7 @@ return {"status": "failed"} try: - last_snapshot = self.last_snapshot() + last_snapshot = self.last_snapshot(last_visit) logger.debug("last snapshot: %s", last_snapshot) known_artifacts = self.known_artifacts(last_snapshot) logger.debug("known artifacts: %s", known_artifacts)