Scala espera Await.result para Future.sequence, ¿qué futuros no se completaron a tiempo?
Tengo lista de futuros y Await.
val listWithResult = Await.result(Future.sequence(listOfFutures), 10.minutes)
falla con
java.util.concurrent.TimeoutException: Futures timed out after [10 minutes]
- ¿Existe alguna técnica para determinar qué futuro no se completó a tiempo?
- ¿Hay alguna forma de atribuir ese futuro con metadatos adicionales para dar una pista de por qué no se completó a tiempo?
Cada futuro envía tareas y sondea el servicio externo para obtener resultados. Me gustaría mostrar esa tarea en stacktrace de alguna manera.
Aceptado
Bueno, puedes descubrir qué no se completó con bastante facilidad con algo como listOfFutures.filterNot(_.isCompleted)
.
(Además, tenga en cuenta que eso Await
es olor a código y, en la gran mayoría de los casos, realmente no es lo que quiere hacer).
En cuanto al "por qué", no creo que haya ningún consejo universal aquí, aparte de lo habitual: registro, métricas, seguimiento...