From db1c33bb0057131e894bf7f8580552bbc7a51db7 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Tue, 20 Mar 2018 17:12:11 +0100
Subject: [PATCH] fix: throw registry-failure exception if docker has internal
 errors

---
 lib/datasource/docker.js | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/lib/datasource/docker.js b/lib/datasource/docker.js
index 18d571b860..4abd861784 100644
--- a/lib/datasource/docker.js
+++ b/lib/datasource/docker.js
@@ -25,6 +25,11 @@ async function getHeaders(repository) {
       Accept: 'application/vnd.docker.distribution.manifest.v2+json',
     };
   } catch (err) {
+    // istanbul ignore if
+    if (err.statusCode >= 500 && err.statusCode < 600) {
+      logger.warn({ err }, 'docker registry failure: internal error');
+      throw new Error('registry-failure');
+    }
     logger.info('Error obtaining docker token');
     return null;
   }
@@ -41,6 +46,11 @@ async function getDigest(name, tag = 'latest') {
     logger.debug({ digest }, 'Got docker digest');
     return digest;
   } catch (err) {
+    // istanbul ignore if
+    if (err.statusCode >= 500 && err.statusCode < 600) {
+      logger.warn({ err }, 'docker registry failure: internal error');
+      throw new Error('registry-failure');
+    }
     logger.info({ err, name, tag }, 'Error looking up docker image digest');
     return null;
   }
@@ -55,6 +65,11 @@ async function getTags(name) {
     logger.debug({ tags }, 'Got docker tags');
     return tags;
   } catch (err) {
+    // istanbul ignore if
+    if (err.statusCode >= 500 && err.statusCode < 600) {
+      logger.warn({ err }, 'docker registry failure: internal error');
+      throw new Error('registry-failure');
+    }
     logger.warn({ err, name }, 'Error getting docker image tags');
     return null;
   }
-- 
GitLab