Cache evection of HTTP Client lead to not closed HttpClients
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 32/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- java
- Área
- networking
Línea de trabajo
Comienza con DefaultApacheHttpClient5Cache.java en la construcción de la caché enlazada y revisa la discusión en el issue 755. Traza cómo se crean, almacenan en caché, expulsan y utilizan los CloseableHttpClients agrupados durante operaciones de larga duración o asíncronas; el trabajo está terminado cuando los clientes expulsados se cierran sin interrumpir a los clientes que aún están en uso.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the Bug
The current implementation of caching and evicting an HTTP Client lead to not closed HttpClients.
Technically the HttpClients are CloseableHttpClient and should / need(specifically for pooled connections) to be closed after usage.
(See also this discussion)
In the current code-base, when a HttpClient with a PoolingHttpClientConnectionManager is created, it's not cleaned up properly on eviction.
The following workaround does not work in all cases:
cache = Caffeine.newBuilder().expireAfterAccess(duration, unit).ticker(ticker).evictionListener((key, value, cause) -> {
if (value instanceof CloseableHttpClient closeableHttpClient) {
try {
closeableHttpClient.close();
} catch (final Exception e) {
log.warn("Failed to close HttpClient. Ignoring the exception and continue.", e);
}
}
}).build();
There are two basic scenarios:
- The client was created and is no longer in use and the eviction time triggers the cleanup. ✅
- The client was created and in still in use (long running operation, async operation, ...) and the eviction time triggers the cleanup. Then the
evictionListenerwould kill the connection underneath. ❌
Steps to Reproduce
Code review.
Expected Behavior
Proper closing of HttpClients.
Screenshots
No response
Used Versions
Current state in main.
Code Examples
// Your code here
Stack Trace
No response
Log File
Log file
...Affected Development Phase
Development
Impact
No Impact
Timeline
No response
- Lenguaje dominante
- Java
- Estrellas
- 41
- Forks
- 33
- Merge medio
- 18 h 34 min
- PR fusionados (30 d)
- 19
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de SAP/cloud-sdk-java
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
SAP/cloud-sdk-java#1280 · 1 comentario ·
-
bug
SAP/cloud-sdk-java#1270 · 3 comentarios · 1 asignado ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
SAP/cloud-sdk-java#1268 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
SAP/cloud-sdk-java#1250 ·
-
ZeroTrustIdentityService does not configure svidPicker, causing non-deterministic SVID selection Abiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
SAP/cloud-sdk-java#1243 · 2 comentarios ·
Todos los issues de SAP/cloud-sdk-java
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
elastic/gradle-plugins#157 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
cryptomator/hub#497 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
johanhaleby/occurrent#1120 ·