Skip to content
This repository has been archived by the owner on Feb 25, 2022. It is now read-only.

Hystrix errors with spring singleton beans #7

Closed
viniciusccarvalho opened this issue Apr 29, 2015 · 1 comment
Closed

Hystrix errors with spring singleton beans #7

viniciusccarvalho opened this issue Apr 29, 2015 · 1 comment

Comments

@viniciusccarvalho
Copy link
Contributor

Seems that some Oauth beans need to run on the same thread that the caller, this lead to errors bellow. Because methods are ran inside hystrix commands, we don't have access to the original thread.

Need to investigate further:

Error creating bean with name 'scopedTarget.oauth2ClientContext': Scope 'session' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton

java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.

0 = {java.lang.StackTraceElement@11409} "org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:352)"
1 = {java.lang.StackTraceElement@11410} "org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)"
2 = {java.lang.StackTraceElement@11411} "org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35)"
3 = {java.lang.StackTraceElement@11412} "org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:187)"
4 = {java.lang.StackTraceElement@11413} "com.sun.proxy.$Proxy90.getAccessToken(Unknown Source)"
5 = {java.lang.StackTraceElement@11414} "org.springframework.security.oauth2.client.OAuth2RestTemplate.doExecute(OAuth2RestTemplate.java:125)"
6 = {java.lang.StackTraceElement@11415} "org.springframework.web.client.RestTemplate.execute(RestTemplate.java:530)"
7 = {java.lang.StackTraceElement@11416} "org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:476)"
8 = {java.lang.StackTraceElement@11417} "io.springbox.apigateway.services.reviews.ReviewsIntegrationService$1.invoke(ReviewsIntegrationService.java:28)"
9 = {java.lang.StackTraceElement@11418} "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
10 = {java.lang.StackTraceElement@11419} "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)"
11 = {java.lang.StackTraceElement@11420} "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
12 = {java.lang.StackTraceElement@11421} "java.lang.reflect.Method.invoke(Method.java:483)"
13 = {java.lang.StackTraceElement@11422} "com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.execute(MethodExecutionAction.java:101)"
14 = {java.lang.StackTraceElement@11423} "com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.executeWithArgs(MethodExecutionAction.java:80)"
15 = {java.lang.StackTraceElement@11424} "com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.execute(MethodExecutionAction.java:66)"
16 = {java.lang.StackTraceElement@11425} "com.netflix.hystrix.contrib.javanica.command.GenericCommand$1.execute(GenericCommand.java:45)"
17 = {java.lang.StackTraceElement@11426} "com.netflix.hystrix.contrib.javanica.command.AbstractHystrixCommand.process(AbstractHystrixCommand.java:161)"
18 = {java.lang.StackTraceElement@11427} "com.netflix.hystrix.contrib.javanica.command.GenericCommand.run(GenericCommand.java:42)"
19 = {java.lang.StackTraceElement@11428} "com.netflix.hystrix.HystrixCommand$1.call(HystrixCommand.java:294)"
20 = {java.lang.StackTraceElement@11429} "com.netflix.hystrix.HystrixCommand$1.call(HystrixCommand.java:289)"
21 = {java.lang.StackTraceElement@11430} "rx.Observable$1.call(Observable.java:144)"
22 = {java.lang.StackTraceElement@11431} "rx.Observable$1.call(Observable.java:136)"
23 = {java.lang.StackTraceElement@11432} "rx.Observable$1.call(Observable.java:144)"
24 = {java.lang.StackTraceElement@11433} "rx.Observable$1.call(Observable.java:136)"
25 = {java.lang.StackTraceElement@11434} "rx.Observable$1.call(Observable.java:144)"
26 = {java.lang.StackTraceElement@11435} "rx.Observable$1.call(Observable.java:136)"
27 = {java.lang.StackTraceElement@11436} "rx.Observable.unsafeSubscribe(Observable.java:7466)"
28 = {java.lang.StackTraceElement@11437} "com.netflix.hystrix.AbstractCommand$5.call(AbstractCommand.java:518)"
29 = {java.lang.StackTraceElement@11438} "com.netflix.hystrix.AbstractCommand$5.call(AbstractCommand.java:501)"
30 = {java.lang.StackTraceElement@11439} "rx.Observable.unsafeSubscribe(Observable.java:7466)"
31 = {java.lang.StackTraceElement@11440} "rx.internal.operators.OperatorSubscribeOn$1$1.call(OperatorSubscribeOn.java:62)"
32 = {java.lang.StackTraceElement@11441} "com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:56)"
33 = {java.lang.StackTraceElement@11442} "com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:47)"
34 = {java.lang.StackTraceElement@11443} "com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction.call(HystrixContexSchedulerAction.java:69)"
35 = {java.lang.StackTraceElement@11444} "rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:47)"
36 = {java.lang.StackTraceElement@11445} "java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)"
37 = {java.lang.StackTraceElement@11446} "java.util.concurrent.FutureTask.run(FutureTask.java:266)"
38 = {java.lang.StackTraceElement@11447} "java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)"
39 = {java.lang.StackTraceElement@11448} "java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)"
40 = {java.lang.StackTraceElement@11449} "java.lang.Thread.run(Thread.java:745)"

@viniciusccarvalho viniciusccarvalho self-assigned this Apr 29, 2015
@viniciusccarvalho
Copy link
Contributor Author

Yep, seems to be that OAuthRestemplate tries to access OauthContext (I need to confirm if its the same of SecurityContext from Spring Security). If this was set by a Filter on a ThreadLocal, we won't be able to access it.

Need to figure out a way to store context on session perhaps

@viniciusccarvalho viniciusccarvalho removed their assignment May 5, 2015
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

1 participant