From 5c08083c421a965dbdb975e0efa704bc493c0ff7 Mon Sep 17 00:00:00 2001 From: Ben Roberts Date: Thu, 23 Oct 2025 13:13:25 +0100 Subject: [PATCH 1/2] Add Retry for connection failures, timeout errors --- lib/lookup_http.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/lookup_http.rb b/lib/lookup_http.rb index 432aa8b..4b3db80 100644 --- a/lib/lookup_http.rb +++ b/lib/lookup_http.rb @@ -79,8 +79,19 @@ def get_parsed(path) end end + retries = 0 + begin httpres = @http.request(httpreq) + rescue Errno::ECONNREFUSED, Net::ReadTimeout => e + if (retries += 1) <= 3 + log_debug("Timeout (#{e}), retrying in #{retries} second(s)...") + sleep(retries) + retry + else + raise LookupHttp::LookupError, e.message unless @config[:failure] == 'graceful' + return + end rescue Exception => e raise LookupHttp::LookupError, e.message unless @config[:failure] == 'graceful' return From 9acf970eede4045c11e83d67fecf7e8a982c852a Mon Sep 17 00:00:00 2001 From: Ben Roberts Date: Thu, 23 Oct 2025 13:28:20 +0100 Subject: [PATCH 2/2] Allow retries to be configurable --- lib/lookup_http.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/lookup_http.rb b/lib/lookup_http.rb index 4b3db80..feb76f0 100644 --- a/lib/lookup_http.rb +++ b/lib/lookup_http.rb @@ -80,13 +80,16 @@ def get_parsed(path) end retries = 0 + retry_limit = @config[:retries] || 3 + retry_interval = @config[:retry_interval] || 1 begin httpres = @http.request(httpreq) rescue Errno::ECONNREFUSED, Net::ReadTimeout => e - if (retries += 1) <= 3 - log_debug("Timeout (#{e}), retrying in #{retries} second(s)...") - sleep(retries) + if (retries += 1) <= retry_limit + retry_sleep = retries * retry_interval + log_debug("Timeout (#{e}), retrying in #{retry_sleep} second(s)...") + sleep(retry_sleep) retry else raise LookupHttp::LookupError, e.message unless @config[:failure] == 'graceful'