Subject: Possible behavioral changes in Feign 13.2.1: implicit retries and health-check requests to root path
We recently migrated from OpenFeign 11.8 to 13.2.1 and observed two unexpected behaviors that we suspect might be related to changes in Feign itself. Could you please confirm whether these could be caused by the library?
- Implicit retries on timeouts / error statuses despite explicit Retryer configuration
Even though we have configured a custom retryer with a maximum of 1 retry attempt (see code below), we are seeing additional retries being performed under the hood when timeouts occur. For example, our setup:
Retryer.Default(300, TimeUnit.SECONDS.toMillis(1), connProps.retryCount)
Retryer.Defult#continueOrPropagate
if (attempt++ >= maxAttempts) { throw e; }
// retryCount = 2 -> 1 retry after the initial attempt, max 2 attempts total
Despite this, we observe more than the expected number of requests hitting the downstream service. Is there any built‑in retry mechanism in Feign 13.x that ignores or supplements the configured Retryer that could explain the extra attempts?
- Health-check requests to root (“/”) when the service returns errors
We are calling an external service via Istio with a specific path, e.g. http://external-service/path/{id}. In certain error scenarios (timeouts, 5xx), we notice additional HTTP requests being sent to the root path of the same service (GET /). Our Feign builder does not contain any explicit health-check configuration. Could Feign 13.2.1 be generating such “liveness” probes on its own, and if so, under what conditions?
Our configuration:
https://github.com/Karim0724/feign-config/blob/main/feign-config
Thank you for your help.
Subject: Possible behavioral changes in Feign 13.2.1: implicit retries and health-check requests to root path
We recently migrated from OpenFeign 11.8 to 13.2.1 and observed two unexpected behaviors that we suspect might be related to changes in Feign itself. Could you please confirm whether these could be caused by the library?
Even though we have configured a custom retryer with a maximum of 1 retry attempt (see code below), we are seeing additional retries being performed under the hood when timeouts occur. For example, our setup:
Retryer.Default(300, TimeUnit.SECONDS.toMillis(1), connProps.retryCount)Retryer.Defult#continueOrPropagate
if (attempt++ >= maxAttempts) { throw e; }// retryCount = 2 -> 1 retry after the initial attempt, max 2 attempts total
Despite this, we observe more than the expected number of requests hitting the downstream service. Is there any built‑in retry mechanism in Feign 13.x that ignores or supplements the configured Retryer that could explain the extra attempts?
We are calling an external service via Istio with a specific path, e.g. http://external-service/path/{id}. In certain error scenarios (timeouts, 5xx), we notice additional HTTP requests being sent to the root path of the same service (GET /). Our Feign builder does not contain any explicit health-check configuration. Could Feign 13.2.1 be generating such “liveness” probes on its own, and if so, under what conditions?
Our configuration:
https://github.com/Karim0724/feign-config/blob/main/feign-config
Thank you for your help.