Work on retry logic, more logging
This commit is contained in:
parent
ace6dbd49f
commit
bab70ee743
@ -18,6 +18,7 @@ from base64 import b64decode
|
|||||||
from minio import Minio
|
from minio import Minio
|
||||||
from http.client import IncompleteRead
|
from http.client import IncompleteRead
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
from random import uniform
|
||||||
|
|
||||||
from datetime import datetime, timezone, timedelta
|
from datetime import datetime, timezone, timedelta
|
||||||
from dateutil.tz import gettz, UTC
|
from dateutil.tz import gettz, UTC
|
||||||
@ -408,25 +409,36 @@ def main():
|
|||||||
offset = 0
|
offset = 0
|
||||||
retries = 10
|
retries = 10
|
||||||
while True:
|
while True:
|
||||||
|
logger.info(
|
||||||
|
"Downloading ‘%s’ (%s, ‘%s’)...",
|
||||||
|
backup.filename,
|
||||||
|
backup.creation,
|
||||||
|
backup.version_id,
|
||||||
|
)
|
||||||
download = minio.get_object(
|
download = minio.get_object(
|
||||||
bucket_name="gitlab-backups",
|
bucket_name="gitlab-backups",
|
||||||
object_name=backup.filename,
|
object_name=backup.filename,
|
||||||
version_id=backup.version_id,
|
version_id=backup.version_id,
|
||||||
offset=offset,
|
offset=offset,
|
||||||
)
|
)
|
||||||
download_stream = download.stream(decode_content=True)
|
download_stream = download.stream(amt=1024 * 1024)
|
||||||
try:
|
try:
|
||||||
while chunk := next(download_stream, b""):
|
while chunk := next(download_stream, b""):
|
||||||
|
logger.debug("Read chunk of %d bytes", len(chunk))
|
||||||
offset += len(chunk)
|
offset += len(chunk)
|
||||||
retries = 10
|
retries = 10
|
||||||
yield chunk
|
yield chunk
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
except IncompleteRead as e:
|
except IncompleteRead as e:
|
||||||
|
logger.warn(
|
||||||
|
"IncompleteRead, retries=%d", retries, exc_info=True
|
||||||
|
)
|
||||||
if retries <= 0:
|
if retries <= 0:
|
||||||
|
logger.error("Max retries exceeded")
|
||||||
raise e
|
raise e
|
||||||
retries -= 1
|
retries -= 1
|
||||||
sleep(10)
|
sleep(uniform(0, 10))
|
||||||
|
|
||||||
download_stream = download_iter()
|
download_stream = download_iter()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user