Hystrix command fails with "timed-out and no fallback available"

dkulkarni picture dkulkarni · Dec 9, 2014 · Viewed 76.9k times · Source

I've noticed that some of the commands in my application fail with

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

This is my Hystrix configuration override:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=210000
hystrix.threadpool.default.coreSize=50
hystrix.threadpool.default.maxQueueSize=100
hystrix.threadpool.default.queueSizeRejectionThreshold=50

What kind of timeout is this? Is it a read/connection timeout to the external application? How do I go about debugging this?

Answer

psantamaria picture psantamaria · Nov 27, 2015

This is a Hystrix Command Timeout, this timeout is enabled by default per each command, you define the value using the property:

execution.isolation.thread.timeoutInMilliseconds: This property sets the time in milliseconds after which the caller will observe a timeout and walk away from the command execution. Hystrix marks > the HystrixCommand as a TIMEOUT, and performs fallback logic.

So you can increase your timeout value or disable the default time out (if apply in your case) for your command using the property:

@HystrixProperty(name = "hystrix.command.default.execution.timeout.enabled", value = "false")

You can find more information here: https://github.com/Netflix/Hystrix/wiki/Configuration#CommandExecution