From c3c1f61c9a952fc7806ab8aec379bafd5bd87a94 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Tue, 12 Feb 2019 13:08:31 -0500 Subject: [PATCH] image_uplaoder: add retry to _layer_stream_registry We have seen that uploading a layer can be problematic if the fetch is dropped by network issues (like it happens in OpenStack Infra). This patch adds a retry to the function that fetch the layer and retry if an HTTP exception is raised. Change-Id: Ia9716447a7d037aaf32c3b01ab511c08e6598e07 Closes-Bug: #1815576 --- tripleo_common/image/image_uploader.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tripleo_common/image/image_uploader.py b/tripleo_common/image/image_uploader.py index a2a03da58..6b1d4fbd3 100644 --- a/tripleo_common/image/image_uploader.py +++ b/tripleo_common/image/image_uploader.py @@ -1066,6 +1066,14 @@ class PythonImageUploader(BaseImageUploader): return r.headers['Location'] @classmethod + @tenacity.retry( # Retry up to 5 times with jittered exponential backoff + reraise=True, + retry=tenacity.retry_if_exception_type( + requests.exceptions.RequestException + ), + wait=tenacity.wait_random_exponential(multiplier=1, max=10), + stop=tenacity.stop_after_attempt(5) + ) def _layer_stream_registry(cls, digest, source_url, calc_digest, session): LOG.debug('Fetching layer: %s' % digest)