{"record":{"id":"916d0fe7c0c2663d","repo":"GoogleContainerTools/jib","slug":"requesturl-failed-and-will-not-be-retried","errorCode":null,"errorMessage":"${requestUrl} failed and will NOT be retried","messagePattern":"(.+?) failed and will NOT 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":369,"sourceCode":"        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) {\n    String log = \"Failed to connect to \" + url + \" over HTTPS. Attempting again with HTTP.\";\n    logger.accept(LogEvent.warn(log));\n  }","sourceCodeStart":351,"sourceCodeEnd":387,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-core/src/main/java/com/google/cloud/tools/jib/http/FailoverHttpClient.java#L351-L387","documentation":"FailoverHttpClient logs this warning when an HTTP request (method + URL) throws an IOException and the client has decided it cannot or will not retry it (retries exhausted or retry not supported). It is a diagnostic warning, not an exception itself; the underlying IOException still propagates.","triggerScenarios":"A request to a registry (e.g. GET /v2/.../manifests/...) fails with an IOException after retries are exhausted, or the request does not support retry (e.g. non-idempotent operations or sendRetriesDisabled), so handleIOException returns false.","commonSituations":"Registry downtime or network flakiness exhausting retries; DNS failures; proxy misconfiguration; running behind a corporate firewall that blocks the registry; attempting writes (push) that are not retried after a transient failure.","solutions":["Inspect the URL in the message and test connectivity to the registry (curl the URL) to identify network/DNS/proxy issues","Check retry configuration and transient registry health; retry the build once the registry is reachable","Verify proxy settings (https.proxyHost/https.proxyPort or Jib sendCredentialsOverHttp-related flags) and VPN/firewall rules","If the failure is persistent, look at the wrapped IOException in the stack trace for the root cause"],"exampleFix":"// before: build fails with opaque network error\njib:build\n// after: diagnose connectivity first\ncurl -v https://registry.example.com/v2/ && mvn jib:build","handlingStrategy":"retry","validationCode":"// check registry reachability before building\ncurl -fsS https://registry.example.com/v2/ || echo \"registry unreachable: fix network/proxy before jib build\"","typeGuard":null,"tryCatchPattern":"try {\n  jibBuild();\n} catch (IOException e) {\n  // logged as 'will NOT be retried'; decide on bounded manual retry\n  if (isTransient(e) && attempts++ < 3) retryWithBackoff();\n  else throw new BuildFailedException(\"registry unreachable: \" + e.getMessage(), e);\n}","preventionTips":["Smoke-test registry connectivity in CI before running Jib","Configure reliable proxy/VPN settings for internal registries","Keep retry-friendly (idempotent) operations where possible and re-run failed pushes"],"tags":["http","network","retry","jib"],"backgroundTag":"network-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"}