Scala espera Await.result para Future.sequence, ¿qué futuros no se completaron a tiempo?

Resuelto Capacytron asked hace 1 año • 0 respuestas

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.

Capacytron avatar Feb 16 '24 04:02 Capacytron
Aceptado

Bueno, puedes descubrir qué no se completó con bastante facilidad con algo como listOfFutures.filterNot(_.isCompleted).

(Además, tenga en cuenta que eso Awaites 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...

Dima avatar Feb 16 '2024 00:02 Dima