firebase / firebase/firebase-admin-java

ApacheHttp2Transport connection did not return to the pool when it is failed

Abierto
#1,134 1 comentario 0 reacciones 1 asignado Reclamado por @jonathanedey Ver en GitHub
Lenguaje dominante
Java
Estrellas
620
Forks
305
Merge medio
3 h 23 min
PR fusionados (30 d)
1

Descripción

Firebase Admin Java SDK v9.6.0

```
FirebaseOptions.Builder builder = FirebaseOptions.builder()
...
.setHttpTransport(new ApacheHttp2Transport(httpClient));
```

```
ApiFuture futures = firebaseMessaging.sendEachAsync(messages, dryRun);
BatchResponse response;
try {
response = futures.get(TIME_OUT_MS, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
...
}
```

```
final PoolStats total = poolingAsyncClientConnectionManager.getTotalStats();
return String.format("Available=%d, leased=%d, pending=%d, max=%d",
total.getAvailable(),
total.getLeased(),
total.getPending(),
total.getMax());
```

Observation:
Under very busy network, FCM backend may return `Unknown error while making a remote service call: Write Timeout` or other errors.

Log writing (successful or failed response) become slow and slower. Afterward, all pending requests were timed out at ` response = futures.get(TIME_OUT_MS, TimeUnit.MILLISECONDS);`

```
When the program just started:
Available=95, leased=5, pending=0, max=200
```
```
After some times:
Available=0, leased=0, pending=0, max=200
```

-----------------------------------------------------------------------------------------------------------------------
Update:

When using `Google APIs Transports`:
There is `disconnect` implementation in [google-http-java-client](https://github.com/googleapis/google-http-java-client/blob/main/google-http-client/src/main/java/com/google/api/client/http/apache/ApacheHttpResponse.java#L118)

However, when using `ApacheHttp2Transport`:
There is no such implementation in [ApacheHttp2Response ](https://github.com/firebase/firebase-admin-java/blob/master/src/main/java/com/google/firebase/internal/ApacheHttp2Response.java)
when it is [disconnected](https://github.com/firebase/firebase-admin-java/blob/master/src/main/java/com/google/firebase/internal/ErrorHandlingHttpClient.java#L113), no matter the response is successfully or failed.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.