From a50abed258160461b96be618d46776139e57130a Mon Sep 17 00:00:00 2001 From: Zach Bloomquist Date: Thu, 13 Jun 2019 13:26:49 -0400 Subject: [PATCH] retry network requests on ENOTFOUND --- packages/server/lib/request.coffee | 2 +- packages/server/test/unit/request_spec.coffee | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/server/lib/request.coffee b/packages/server/lib/request.coffee index 161640ec9e02..543a02c2b2ca 100644 --- a/packages/server/lib/request.coffee +++ b/packages/server/lib/request.coffee @@ -19,7 +19,7 @@ CookieJar = tough.CookieJar ## shallow clone the original serializableProperties = Cookie.serializableProperties.slice(0) -NETWORK_ERRORS = "ECONNREFUSED ECONNRESET EPIPE EHOSTUNREACH EAI_AGAIN".split(" ") +NETWORK_ERRORS = "ECONNREFUSED ECONNRESET EPIPE EHOSTUNREACH EAI_AGAIN ENOTFOUND".split(" ") VERBOSE_REQUEST_OPTS = "followRedirect jar strictSSL".split(" ") HTTP_CLIENT_REQUEST_EVENTS = "abort connect continue information socket timeout upgrade".split(" ") diff --git a/packages/server/test/unit/request_spec.coffee b/packages/server/test/unit/request_spec.coffee index e6a177568c5a..ca305968d7eb 100644 --- a/packages/server/test/unit/request_spec.coffee +++ b/packages/server/test/unit/request_spec.coffee @@ -214,6 +214,26 @@ describe "lib/request", -> expect(retries).to.eq(4) done() + it "retries 4x on a NXDOMAIN (ENOTFOUND)", (done) -> + nock.enableNetConnect() + + opts = { + url: "http://will-never-exist.invalid.example.com" + retryIntervals: [0, 1, 2, 3] + } + + stream = request.create(opts) + + retries = 0 + + stream.on "retry", -> + retries++ + + stream.on "error", (err) -> + expect(err.code).to.eq('ENOTFOUND') + expect(retries).to.eq(4) + done() + context "retries for promises", -> it "does not retry on a timeout", -> opts = {