Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ThreadPools are not shutdown even after Hystrix.reset() call if there is no fallback defined #388

Closed
kbsivacse opened this issue Dec 31, 2014 · 3 comments

Comments

@kbsivacse
Copy link

JVM hangs after throwing a time-out exception,
com.netflix.hystrix.exception.HystrixRuntimeException: PrimaryCommand timed-out and no fallback available.
at com.netflix.hystrix.HystrixObservableCommand$15.call(HystrixObservableCommand.java:689)
at com.netflix.hystrix.HystrixObservableCommand$15.call(HystrixObservableCommand.java:672)
at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$1.onError(OperatorOnErrorResumeNextViaFunction.java:76)
at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:70)
at rx.internal.operators.OperatorMap$1.onError(OperatorMap.java:48)
at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:70)
at rx.Observable$ThrowObservable$1.call(Observable.java:10493)
at rx.Observable$ThrowObservable$1.call(Observable.java:10483)
at rx.Observable.unsafeSubscribe(Observable.java:8591)
at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$1.onError(OperatorOnErrorResumeNextViaFunction.java:77)
at rx.internal.operators.OperatorMap$1.onError(OperatorMap.java:48)
at com.netflix.hystrix.HystrixCommand$HystrixCommandFromObservableCommand$2.call(HystrixCommand.java:375)
at com.netflix.hystrix.HystrixCommand$HystrixCommandFromObservableCommand$2.call(HystrixCommand.java:367)
at rx.Observable$2.call(Observable.java:173)
at rx.Observable$2.call(Observable.java:166)
at rx.Observable$2.call(Observable.java:173)
at rx.Observable$2.call(Observable.java:166)
at rx.Observable$2.call(Observable.java:173)
at rx.Observable$2.call(Observable.java:166)
at rx.Observable$2.call(Observable.java:173)
at rx.Observable$2.call(Observable.java:166)
at rx.Observable$2.call(Observable.java:173)
at rx.Observable$2.call(Observable.java:166)
at rx.Observable$2.call(Observable.java:173)
at rx.Observable$2.call(Observable.java:166)
at rx.Observable$2.call(Observable.java:173)
at rx.Observable$2.call(Observable.java:166)
at rx.Observable$2.call(Observable.java:173)
at rx.Observable$2.call(Observable.java:166)
at rx.Observable.unsafeSubscribe(Observable.java:8591)
at rx.internal.operators.OperatorSubscribeOn$1$1.call(OperatorSubscribeOn.java:62)
at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:56)
at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:47)
at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction.call(HystrixContexSchedulerAction.java:69)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:43)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.util.concurrent.TimeoutException
at com.netflix.hystrix.HystrixObservableCommand$7.call(HystrixObservableCommand.java:489)
at com.netflix.hystrix.HystrixObservableCommand$7.call(HystrixObservableCommand.java:473)
at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$1.onError(OperatorOnErrorResumeNextViaFunction.java:76)
at rx.internal.operators.OperatorMap$1.onError(OperatorMap.java:48)
at com.netflix.hystrix.HystrixObservableCommand$HystrixObservableTimeoutOperator$1.run(HystrixObservableCommand.java:786)
at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:41)
at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:37)
at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable.run(HystrixContextRunnable.java:57)
at com.netflix.hystrix.HystrixObservableCommand$HystrixObservableTimeoutOperator$2.tick(HystrixObservableCommand.java:807)
at com.netflix.hystrix.HystrixExecutableBase$1.performBlockingGetWithTimeout(HystrixExecutableBase.java:492)
at com.netflix.hystrix.HystrixExecutableBase$1.get(HystrixExecutableBase.java:387)
at com.netflix.hystrix.HystrixExecutableBase.execute(HystrixExecutableBase.java:296)
at com.netflix.hystrix.HystrixObservableCommand.execute(HystrixObservableCommand.java:50)
at com.netflix.hystrix.HystrixCommand.execute(HystrixCommand.java:485)

@mattrjacobs mattrjacobs added this to the 1.4.0-RC6 milestone Jan 7, 2015
@mattrjacobs
Copy link
Contributor

@kbsivacse Can you share some code about what the calling thread is doing and what the HystrixCommand is doing? If the Hystrix thread is not getting interrupted properly, that's likely related to #354 and #379, which I'm still working on. If it's something else, then I'd love to have a way to replicate your bug.

@mattrjacobs mattrjacobs removed this from the 1.4.0-RC6 milestone Jan 8, 2015
@mattrjacobs
Copy link
Contributor

Also the performBlockingGetWithTimeout path is now removed, as of #579. It would be great to get confirmation that this bug is gone.

@mattrjacobs
Copy link
Contributor

Closing due to inactivity. Please re-open if you want to provide further info

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants