From d4706f9c2edd2956945bfad9ecc81e20a19bb042 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Tue, 11 Sep 2018 13:07:40 +0200
Subject: [PATCH] fix(docker): catch 429 errors

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

diff --git a/lib/datasource/docker.js b/lib/datasource/docker.js
index 779688957c..c836f91af1 100644
--- a/lib/datasource/docker.js
+++ b/lib/datasource/docker.js
@@ -72,6 +72,10 @@ async function getAuthHeaders(registry, repository) {
       logger.debug({ err });
       return null;
     }
+    if (err.statusCode === 429) {
+      logger.warn({ err }, 'docker registry failure: too many requests');
+      throw new Error('registry-failure');
+    }
     if (err.statusCode >= 500 && err.statusCode < 600) {
       logger.warn({ err }, 'docker registry failure: internal error');
       throw new Error('registry-failure');
@@ -132,6 +136,10 @@ async function getDigest(config, newValue) {
       );
       return null;
     }
+    if (err.statusCode === 429) {
+      logger.warn({ err }, 'docker registry failure: too many requests');
+      throw new Error('registry-failure');
+    }
     if (err.statusCode >= 500 && err.statusCode < 600) {
       logger.warn(
         {
@@ -208,6 +216,10 @@ async function getPkgReleases(purl) {
       logger.info({ purl }, 'Not authorised to look up docker tags');
       return null;
     }
+    if (err.statusCode === 429) {
+      logger.warn({ purl, err }, 'docker registry failure: too many requests');
+      throw new Error('registry-failure');
+    }
     if (err.statusCode >= 500 && err.statusCode < 600) {
       logger.warn({ purl, err }, 'docker registry failure: internal error');
       throw new Error('registry-failure');
-- 
GitLab