{"record":{"id":"676cebaca102e3e0","repo":"GoogleContainerTools/jib","slug":"requesturl-failed-and-will-be-retried","errorCode":null,"errorMessage":"${requestUrl} failed and will be retried","messagePattern":"(.+?) failed and will be retried","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"jib-core/src/main/java/com/google/cloud/tools/jib/http/FailoverHttpClient.java","lineNumber":366,"sourceCode":"    try {\n      Response response = new Response(httpRequest.execute());\n      synchronized (responsesCreated) {\n        responsesCreated.add(response);\n      }\n      return response;\n    } catch (HttpResponseException ex) {\n      throw new ResponseException(ex, clearAuthorization);\n    }\n  }\n\n  private HttpIOExceptionHandler createBackOffRetryHandler() {\n    return new HttpBackOffIOExceptionHandler(new ExponentialBackOff()) {\n      @Override\n      public boolean handleIOException(HttpRequest request, boolean supportsRetry)\n          throws IOException {\n        String requestUrl = request.getRequestMethod() + \" \" + request.getUrl();\n        if (super.handleIOException(request, supportsRetry)) {\n          logger.accept(LogEvent.warn(requestUrl + \" failed and will be retried\"));\n          return true;\n        }\n        logger.accept(LogEvent.warn(requestUrl + \" failed and will NOT be retried\"));\n        return false;\n      }\n    };\n  }\n\n  private HttpTransport getHttpTransport(boolean secureTransport) {\n    HttpTransport transport =\n        secureTransport ? secureHttpTransportFactory.get() : insecureHttpTransportFactory.get();\n    synchronized (transportsCreated) {\n      transportsCreated.add(transport);\n    }\n    return transport;\n  }\n\n  private void logHttpFailover(URL url) {","sourceCodeStart":348,"sourceCodeEnd":384,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-core/src/main/java/com/google/cloud/tools/jib/http/FailoverHttpClient.java#L348-L384","documentation":"Jib's FailoverHttpClient installs an HttpBackOffIOExceptionHandler that retries requests after transient IOExceptions with exponential backoff. When a retry will happen it logs \"<METHOD> <url> failed and will be retried\"; when retries are exhausted it logs the 'will NOT be retried' variant.","triggerScenarios":"handleIOException fires on any IOException from an HTTP request made through FailoverHttpClient (connection reset, timeout, DNS hiccup) while super.handleIOException still permits retries; the warning is emitted for each retried attempt.","commonSituations":"Flaky corporate proxies or VPNs; registry rate limiting dropping connections; temporary DNS failures; network interruptions in CI runners.","solutions":["Usually no action needed — Jib retries automatically with exponential backoff","If warnings recur until 'will NOT be retried', check network/proxy connectivity to the registry","Configure credentials/CA certs if TLS interception is causing connection failures","Retry the build after the network stabilizes"],"exampleFix":"// before (shell)\nmvn jib:build   # fails behind corporate proxy\n// after\nexport HTTPS_PROXY=http://proxy.corp:8080\nexport JIB_CLIENT_TIMEOUT=60000\nmvn jib:build","handlingStrategy":"retry","validationCode":"// Pre-check registry connectivity before building\ncurl -fsS --max-time 10 https://registry-1.docker.io/v2/ >/dev/null && echo \"registry reachable\" || echo \"network issue: expect retries\"","typeGuard":null,"tryCatchPattern":"boolean ok = new HttpBackOffIOExceptionHandler(new ExponentialBackOff())\n    .handleIOException(request, supportsRetry);\nif (!ok) {\n  logger.warn(\"{} failed and will NOT be retried; check network/proxy\", requestUrl);\n}","preventionTips":["Treat single 'will be retried' warnings as transient; only act if they repeat","Ensure proxies/VPN/registry endpoints are reachable from CI runners","Increase client timeout or backoff settings on flaky networks","Verify DNS and TLS interception configuration for registry hosts"],"tags":["jib","network","http","retry"],"backgroundTag":"http-request-failed","analyzedSha":"fb949e2676afbbd7dd7a1ef61e20251931325654","analyzedAt":"2026-09-06T14:04:09.491Z","contentChangedAt":"2026-09-06T14:04:09.491Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}