J'ai remarqué que certaines des commandes de mon application échouaient.
Caused by: ! com.netflix.hystrix.exception.HystrixRuntimeException: GetAPICommand timed-out and no fallback available.
out: ! at com.netflix.hystrix.HystrixCommand.getFallbackOrThrowException(HystrixCommand.Java:1631)
out: ! at com.netflix.hystrix.HystrixCommand.access$2000(HystrixCommand.Java:97)
out: ! at com.netflix.hystrix.HystrixCommand$TimeoutObservable$1$1.tick(HystrixCommand.Java:1025)
out: ! at com.netflix.hystrix.HystrixCommand$1.performBlockingGetWithTimeout(HystrixCommand.Java:621)
out: ! at com.netflix.hystrix.HystrixCommand$1.get(HystrixCommand.Java:516)
out: ! at com.netflix.hystrix.HystrixCommand.execute(HystrixCommand.Java:425)
out: Caused by: ! Java.util.concurrent.TimeoutException: null
out: !... 11 common frames omitted
Voici mon remplacement de la configuration Hystrix:
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=210000
hystrix.threadpool.default.coreSize=50
hystrix.threadpool.default.maxQueueSize=100
hystrix.threadpool.default.queueSizeRejectionThreshold=50
Quel genre de timeout est-ce? S'agit-il d'un délai de lecture/connexion à l'application externe? Comment puis-je procéder pour déboguer cela?
Il se peut que vous soyez en train de déboguer ou que votre connexion soit trop lente, le délai d’exécution du thread par défaut n’est que de 1 seconde. Vous pouvez donc facilement obtenir ce message si vous mettez un point de rupture dans votre commande.
Bien que ce ne soit pas votre cas, mais pourrait aider quelqu'un d'autre
En regardant le stacktrace, il s'agit d'une exception levée par Hystrix après les 210 secondes définies ci-dessus.
Comme TimeoutException
est une exception vérifiée qui doit être déclarée sur chaque méthode susceptible de générer cette exception. Vous verriez ceci déclaré dans la méthode run()
de votre code.
Vous pouvez le déboguer comme n'importe quel autre programme, mais sachez que la méthode run()
s'exécute dans un thread distinct de l'appelant. Après 210 secondes, l'appelant continuera simplement malgré votre session de débogage.