Compare commits

...

2 Commits

Author SHA1 Message Date
Dirk Müller
c9e07e536f
Try to fetch the element as deleted if initial access failed
The reference to the object might be already deleted by when the
request is failing. plus setting deleted=0 is rejected by the API.
So try with deleted=1 if and only if the previous access failed.
2023-12-07 18:30:36 +01:00
Dirk Müller
dc0f33354e
Failing to LFS register should abort the import 2023-12-07 18:29:56 +01:00
2 changed files with 24 additions and 7 deletions

View File

@ -133,6 +133,7 @@ class LFSOid:
json=data, json=data,
timeout=10, timeout=10,
) )
response.raise_for_status()
logging.info(f"Register LFS returned {response.status_code}") logging.info(f"Register LFS returned {response.status_code}")

View File

@ -148,12 +148,28 @@ class OBS:
] ]
def _download(self, project, package, name, revision): def _download(self, project, package, name, revision):
# the object might be deleted but we can only pass deleted=1
# if it is actually deleted
deleted = 0
while deleted < 2:
url = osc.core.makeurl(
self.url,
["source", project, package, urllib.parse.quote(name)],
{"rev": revision, "expand": 1, "deleted": deleted if deleted else ()},
)
try:
osc.core.http_request("HEAD", url)
break
except Exception:
pass
deleted += 1
url = osc.core.makeurl( url = osc.core.makeurl(
self.url, self.url,
["source", project, package, urllib.parse.quote(name)], ["source", project, package, urllib.parse.quote(name)],
{"rev": revision, "expand": 1}, {"rev": revision, "expand": 1, "deleted": 1 if deleted else ()},
) )
return osc.core.http_GET(url) return osc.core.http_request("GET", url)
def download( def download(
self, self,