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

Request Scope not active in Fault Tolerance handling #2632

Closed
bunto76 opened this issue Jan 4, 2021 · 13 comments
Closed

Request Scope not active in Fault Tolerance handling #2632

bunto76 opened this issue Jan 4, 2021 · 13 comments
Assignees
Labels
2.x Issues for 2.x version branch
Projects

Comments

@bunto76
Copy link

bunto76 commented Jan 4, 2021

Environment Details

  • Helidon Version: 2.2.0
  • Helidon SE or Helidon MP
  • JDK version: 11.0.6
  • OS: macOS 10.15.7

Problem Description

This is an intermittent problem that I can only reproduce locally about 10% of the time and only by constantly re-running the tests. It is causing periodic fails in project jenkins build, which has highlighted the issue. During Fault Tolerant handling, Retry and Fallback handling, the Request Scope is not active or not available during the retry or fallback handling. I can't say if it is exclusive to those scenarios but those are the scenarios used in this code.

[ApplicationContainer] 	at com.oracle.cxcom.image.cache.ImageCacheAccessor.getCachedSourceImage(ImageCacheAccessor.java:134)
[ApplicationContainer] 	at com.oracle.cxcom.image.cache.ImageCacheAccessor$Proxy$_$$_WeldSubclass.getCachedSourceImage$$super(Unknown Source)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$11(MethodInvoker.java:484)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:219)
[ApplicationContainer] 	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:314)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$12(MethodInvoker.java:480)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$toCompletionStageSupplier$19(MethodInvoker.java:683)
[ApplicationContainer] 	at io.helidon.faulttolerance.DelayedTask$2.execute(DelayedTask.java:114)
[ApplicationContainer] 	at io.helidon.faulttolerance.CircuitBreakerImpl.invokeTask(CircuitBreakerImpl.java:86)
[ApplicationContainer] 	at io.helidon.faulttolerance.CircuitBreakerImpl.invoke(CircuitBreakerImpl.java:80)
[ApplicationContainer] 	at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$TypedWrapper.invoke(FaultTolerance.java:302)
[ApplicationContainer] 	at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.lambda$invoke$1(FaultTolerance.java:276)
[ApplicationContainer] 	at io.helidon.faulttolerance.FallbackImpl.invoke(FallbackImpl.java:60)
[ApplicationContainer] 	at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.lambda$invoke$1(FaultTolerance.java:276)
[ApplicationContainer] 	at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.invoke(FaultTolerance.java:279)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$7(MethodInvoker.java:391)
[ApplicationContainer] 	at io.helidon.common.context.Contexts.runInContextWithThrow(Contexts.java:161)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$8(MethodInvoker.java:390)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.get(MethodInvoker.java:448)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.CommandInterceptor.interceptCommand(CommandInterceptor.java:54)
[ApplicationContainer] 	at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
[ApplicationContainer] 	at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
[ApplicationContainer] 	at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
[ApplicationContainer] 	at com.oracle.cxcom.image.cache.ImageCacheAccessor$Proxy$_$$_WeldSubclass.getCachedSourceImage(Unknown Source)
[ApplicationContainer] 	at com.oracle.cxcom.image.cache.ImageCacheAccessor$Proxy$_$$_WeldClientProxy.getCachedSourceImage(Unknown Source)
[ApplicationContainer] 	at com.oracle.cxcom.image.DynamicImageEndpoints.getSourceImage(DynamicImageEndpoints.java:344)
[ApplicationContainer] 	at com.oracle.cxcom.image.DynamicImageEndpoints.getImages(DynamicImageEndpoints.java:208)
[ApplicationContainer] 	at com.oracle.cxcom.image.DynamicImageEndpoints$Proxy$_$$_WeldSubclass.getImages$$super(Unknown Source)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$11(MethodInvoker.java:484)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:219)
[ApplicationContainer] 	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:314)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$12(MethodInvoker.java:480)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$toCompletionStageSupplier$19(MethodInvoker.java:683)
[ApplicationContainer] 	at io.helidon.faulttolerance.TimeoutImpl.invoke(TimeoutImpl.java:99)
[ApplicationContainer] 	at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$TypedWrapper.invoke(FaultTolerance.java:302)
[ApplicationContainer] 	at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.lambda$invoke$1(FaultTolerance.java:276)
[ApplicationContainer] 	at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.invoke(FaultTolerance.java:279)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$7(MethodInvoker.java:391)
[ApplicationContainer] 	at io.helidon.common.context.Contexts.runInContextWithThrow(Contexts.java:161)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$8(MethodInvoker.java:390)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.get(MethodInvoker.java:448)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.CommandInterceptor.interceptCommand(CommandInterceptor.java:54)
[ApplicationContainer] 	at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.NonTerminalAroundInvokeInvocationContext.proceedInternal(NonTerminalAroundInvokeInvocationContext.java:66)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 	at io.helidon.metrics.HelidonTimer$TimerImpl.time(HelidonTimer.java:304)
[ApplicationContainer] 	at io.helidon.metrics.HelidonTimer.time(HelidonTimer.java:65)
[ApplicationContainer] 	at io.helidon.microprofile.metrics.InterceptorTimed.prepareAndInvoke(InterceptorTimed.java:49)
[ApplicationContainer] 	at io.helidon.microprofile.metrics.InterceptorTimed.prepareAndInvoke(InterceptorTimed.java:31)
[ApplicationContainer] 	at io.helidon.microprofile.metrics.InterceptorBase.called(InterceptorBase.java:152)
[ApplicationContainer] 	at io.helidon.microprofile.metrics.InterceptorBase.aroundMethod(InterceptorBase.java:129)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.NonTerminalAroundInvokeInvocationContext.proceedInternal(NonTerminalAroundInvokeInvocationContext.java:66)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 	at io.helidon.microprofile.tracing.MpTracingInterceptor.trace(MpTracingInterceptor.java:63)
[ApplicationContainer] 	at io.helidon.microprofile.tracing.MpTracingInterceptor.aroundMethod(MpTracingInterceptor.java:56)
[ApplicationContainer] 	at jdk.internal.reflec[ApplicationContainer] t.GeneratedMethodAccessor23.invoke(Unknown Source)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
[ApplicationContainer] 	at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
[ApplicationContainer] 	at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
[ApplicationContainer] 	at com.oracle.cxcom.image.DynamicImageEndpoints$Proxy$_$$_WeldSubclass.getImages(Unknown Source)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
[ApplicationContainer] 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
[ApplicationContainer] 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
[ApplicationContainer] 	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
[ApplicationContainer] 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
[ApplicationContainer] 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
[ApplicationContainer] 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
[ApplicationContainer] 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
[ApplicationContainer] 	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
[ApplicationContainer] 	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
[ApplicationContainer] 	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234)
[ApplicationContainer] 	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
[ApplicationContainer] 	at io.helidon.webserver.jersey.JerseySupport$JerseyHandler.lambda$doAccept$3(JerseySupport.java:279)
[ApplicationContainer] 	at io.helidon.common.context.Contexts.runInContext(Contexts.java:117)
[ApplicationContainer] 	at io.helidon.common.context.ContextAwareExecutorImpl.lambda$wrap$5(ContextAwareExecutorImpl.java:154)
[ApplicationContainer] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[ApplicationContainer] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[ApplicationContainer] 	at java.base/java.lang.Thread.run(Thread.java:834)
[ApplicationContainer] Caused by: org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void com.oracle.cxcom.chassis.tenant.TenantContext.init() on com.oracle.cxcom.chassis.tenant.TenantContext@5f511535
[ApplicationContainer] 	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:85)
[ApplicationContainer] 	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.postConstruct(DefaultLifecycleCallbackInvoker.java:66)
[ApplicationContainer] 	at org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct(BasicInjectionTarget.java:122)
[ApplicationContainer] 	at org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider$InjectionManagerInjectedCdiTarget.postConstruct(CdiComponentProvider.java:888)
[ApplicationContainer] 	at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:164)
[ApplicationContainer] 	at org.jboss.weld.contexts.AbstractContext.get(AbstractContext.java:96)
[ApplicationContainer] 	at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100)
[ApplicationContainer] 	at org.jboss.weld.bean.ContextualInstanceStrategy$CachingContextualInstanceStrategy.get(ContextualInstanceStrategy.java:177)
[ApplicationContainer] 	at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
[ApplicationContainer] 	at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:102)
[ApplicationContainer] 	at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:131)
[ApplicationContainer] 	at com.oracle.cxcom.chassis.tenant.TenantContext$Proxy$_$$_WeldClientProxy.getTenantId(Unknown Source)
[ApplicationContainer] 	at com.oracle.cxcom.image.cache.ImageCacheEntry.getCurrentDirectory(ImageCacheEntry.java:155)
[ApplicationContainer] 	at com.oracle.cxcom.image.cache.ImageCacheEntry.getPath(ImageCacheEntry.java:169)
[ApplicationContainer] 	at com.oracle.cxcom.cache.file.FileCacheEntry.getEntry(FileCacheEntry.java:55)
[ApplicationContainer] 	at com.oracle.cxcom.image.cache.ImageCacheEntry$Proxy$_$$_WeldClientProxy.getEntry(Unknown Source)
[ApplicationContainer] 	at com.oracle.cxcom.cache.file.FileCache.get(FileCache.java:210)
[ApplicationContainer] 	at com.oracle.cxcom.cache.file.FileCache$Proxy$_$$_WeldSubclass.get(Unknown Source)
[ApplicationContainer] 	at com.oracle.cxcom.cache.file.FileCache.get(FileCache.java:223)
[ApplicationContainer] 	at com.oracle.cxcom.cache.file.FileCache$Proxy$_$$_WeldSubclass.get$$super(Unknown Source)
[ApplicationContainer] 	at jdk.internal.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
[ApplicationContainer] 	at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$11(MethodInvoker.java:484)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
[ApplicationContainer] 	at org.glassfish.jersey.internal.Errors.process(Errors.java:219)
[ApplicationContainer] 	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:314)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$12(MethodInvoker.java:480)
[ApplicationContainer] 	at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$toCompletionStageSupplier$19(MethodInvoker.java:683)
[ApplicationContainer] 	at io.helidon.faulttolerance.DelayedTask$2.execute(DelayedTask.java:114)
[ApplicationContainer] 	at io.helidon.common.context.Contexts.runInContext(Contexts.java:137)
[ApplicationContainer] 	at io.helidon.common.context.ContextAwareExecutorImpl.lambda$wrap$2(ContextAwareExecutorImpl.java:135)
[ApplicationContainer] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[ApplicationContainer] 	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
[ApplicationContainer] 	... 3 common frames omitted
[ApplicationContainer] 	Suppressed: com.oracle.cxcom.image.cache.ImageCacheException: Error moving image.
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter.downloadFile(ImageCacheAdapter.java:220)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter$Proxy$_$$_WeldSubclass.downloadFile(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter.getCacheElement(ImageCacheAdapter.java:167)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter$Proxy$_$$_WeldSubclass.getCacheElement$$super(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 		at io.helidon.microprofile.tracing.MpTracingInterceptor.trace(MpTracingInterceptor.java:90)
[ApplicationContainer] 		at io.helidon.microprofile.tracing.MpTracingInterceptor.aroundMethod(MpTracingInterceptor.java:56)
[ApplicationContainer] 		at jdk.internal.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
[ApplicationContainer] 		at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
[ApplicationContainer] 		at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter$Proxy$_$$_WeldSubclass.getCacheElement(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter$Proxy$_$$_WeldClientProxy.getCacheElement(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.cache.file.FileCache.get(FileCache.java:225)
[ApplicationContainer] 		at com.oracle.cxcom.cache.file.FileCache$Proxy$_$$_WeldSubclass.get$$super(Unknown Source)
[ApplicationContainer] 		at jdk.internal.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$11(MethodInvoker.java:484)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:219)
[ApplicationContainer] 		at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:314)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$12(MethodInvoker.java:480)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$toCompletionStageSupplier$19(MethodInvoker.java:683)
[ApplicationContainer] 		at io.helidon.faulttolerance.DelayedTask$2.execute(DelayedTask.java:114)
[ApplicationContainer] 		at io.helidon.faulttolerance.RetryImpl.retrySingle(RetryImpl.java:92)
[ApplicationContainer] 		at io.helidon.faulttolerance.RetryImpl.invoke(RetryImpl.java:63)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$TypedWrapper.invoke(FaultTolerance.java:302)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.lambda$invoke$1(FaultTolerance.java:276)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.invoke(FaultTolerance.java:279)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$7(MethodInvoker.java:391)
[ApplicationContainer] 		at io.helidon.common.context.Contexts.runInContextWithThrow(Contexts.java:161)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$8(MethodInvoker.java:390)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.get(MethodInvoker.java:448)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.CommandInterceptor.interceptCommand(CommandInterceptor.java:54)
[ApplicationContainer] 		at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.jav[ApplicationContainer] a:73)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
[ApplicationContainer] 		at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
[ApplicationContainer] 		at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
[ApplicationContainer] 		at com.oracle.cxcom.cache.file.FileCache$Proxy$_$$_WeldSubclass.get(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.cache.file.FileCache$Proxy$_$$_WeldClientProxy.get(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAccessor.getCachedSourceImage(ImageCacheAccessor.java:127)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAccessor$Proxy$_$$_WeldSubclass.getCachedSourceImage$$super(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$11(MethodInvoker.java:484)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:219)
[ApplicationContainer] 		at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:314)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$12(MethodInvoker.java:480)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$toCompletionStageSupplier$19(MethodInvoker.java:683)
[ApplicationContainer] 		at io.helidon.faulttolerance.DelayedTask$2.execute(DelayedTask.java:114)
[ApplicationContainer] 		at io.helidon.faulttolerance.CircuitBreakerImpl.invokeTask(CircuitBreakerImpl.java:86)
[ApplicationContainer] 		at io.helidon.faulttolerance.CircuitBreakerImpl.invoke(CircuitBreakerImpl.java:80)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$TypedWrapper.invoke(FaultTolerance.java:302)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.lambda$invoke$1(FaultTolerance.java:276)
[ApplicationContainer] 		at io.helidon.faulttolerance.FallbackImpl.invoke(FallbackImpl.java:60)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.lambda$invoke$1(FaultTolerance.java:276)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.invoke(FaultTolerance.java:279)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$7(MethodInvoker.java:391)
[ApplicationContainer] 		at io.helidon.common.context.Contexts.runInContextWithThrow(Contexts.java:161)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$8(MethodInvoker.java:390)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.get(MethodInvoker.java:448)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.CommandInterceptor.interceptCommand(CommandInterceptor.java:54)
[ApplicationContainer] 		at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
[ApplicationContainer] 		at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
[ApplicationContainer] 		at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAccessor$Proxy$_$$_WeldSubclass.getCachedSourceImage(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAccessor$Proxy$_$$_WeldClientProxy.getCachedSourceImage(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.image.DynamicImageEndpoints.getSourceImage(DynamicImageEndpoints.java:344)
[ApplicationContainer] 		at com.oracle.cxcom.image.DynamicImageEndpoints.getImages(DynamicImageEndpoints.java:208)
[ApplicationContainer] 		at com.oracle.cxcom.image.DynamicImageEndpoints$Proxy$_$$_WeldSubclass.getImages$$super(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$11(MethodInvoker.java:484)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:219)
[ApplicationContainer] 		at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:314)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$requestContextSupplier$12(MethodInvoker.java:480)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$toCompletionStageSupplier$19(MethodInvoker.java:683)
[ApplicationContainer] 		at io.helidon.faulttolerance.TimeoutImpl.invoke(TimeoutImpl.java:99)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$TypedWrapper.invoke(FaultTolerance.java:302)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.lambda$invoke$1(FaultTolerance.java:276)
[ApplicationContainer] 		at io.helidon.faulttolerance.FaultTolerance$TypedBuilder$FtHandlerTypedImpl.invoke(FaultTolerance.java:279)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$7(MethodInvoker.java:391)
[ApplicationContainer] 		at io.helidon.common.context.Contexts.runInContextWithThrow(Contexts.java:161)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.lambda$get$8(MethodInvoker.java:390)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.MethodInvoker.get(MethodInvoker.java:448)
[ApplicationContainer] 		at io.helidon.microprofile.faulttolerance.CommandInterceptor.interceptCommand(CommandInterceptor.java:54)
[ApplicationContainer] 		at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.NonTerminalAroundInvokeInvocationContext.proceedInternal(NonTerminalAroundInvokeInvocationContext.java:66)
[ApplicationContainer] 		at org.[ApplicationContainer] jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 		at io.helidon.metrics.HelidonTimer$TimerImpl.time(HelidonTimer.java:304)
[ApplicationContainer] 		at io.helidon.metrics.HelidonTimer.time(HelidonTimer.java:65)
[ApplicationContainer] 		at io.helidon.microprofile.metrics.InterceptorTimed.prepareAndInvoke(InterceptorTimed.java:49)
[ApplicationContainer] 		at io.helidon.microprofile.metrics.InterceptorTimed.prepareAndInvoke(InterceptorTimed.java:31)
[ApplicationContainer] 		at io.helidon.microprofile.metrics.InterceptorBase.called(InterceptorBase.java:152)
[ApplicationContainer] 		at io.helidon.microprofile.metrics.InterceptorBase.aroundMethod(InterceptorBase.java:129)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.NonTerminalAroundInvokeInvocationContext.proceedInternal(NonTerminalAroundInvokeInvocationContext.java:66)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78)
[ApplicationContainer] 		at io.helidon.microprofile.tracing.MpTracingInterceptor.trace(MpTracingInterceptor.java:63)
[ApplicationContainer] 		at io.helidon.microprofile.tracing.MpTracingInterceptor.aroundMethod(MpTracingInterceptor.java:56)
[ApplicationContainer] 		at jdk.internal.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
[ApplicationContainer] 		at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
[ApplicationContainer] 		at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
[ApplicationContainer] 		at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
[ApplicationContainer] 		at com.oracle.cxcom.image.DynamicImageEndpoints$Proxy$_$$_WeldSubclass.getImages(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
[ApplicationContainer] 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
[ApplicationContainer] 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
[ApplicationContainer] 		at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
[ApplicationContainer] 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
[ApplicationContainer] 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
[ApplicationContainer] 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
[ApplicationContainer] 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
[ApplicationContainer] 		at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
[ApplicationContainer] 		at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
[ApplicationContainer] 		at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
[ApplicationContainer] 		at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234)
[ApplicationContainer] 		at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
[ApplicationContainer] 		at io.helidon.webserver.jersey.JerseySupport$JerseyHandler.lambda$doAccept$3(JerseySupport.java:279)
[ApplicationContainer] 		at io.helidon.common.context.Contexts.runInContext(Contexts.java:117)
[ApplicationContainer] 		at io.helidon.common.context.ContextAwareExecutorImpl.lambda$wrap$5(ContextAwareExecutorImpl.java:154)
[ApplicationContainer] 		... 3 common frames omitted
[ApplicationContainer] 	Caused by: java.nio.file.NoSuchFileException: /tmp/cdb9c693-cd02-4c2c-a542-05d3403d644f12650173680542026565.tmp -> /cxcom/tmp/image-cache/tenant1/cdb9c693-cd02-4c2c-a542-05d3403d644f12650173680542026565.tmp
[ApplicationContainer] 		at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
[ApplicationContainer] 		at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
[ApplicationContainer] 		at java.base/sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:478)
[ApplicationContainer] 		at java.base/sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:267)
[ApplicationContainer] 		at java.base/java.nio.file.Files.move(Files.java:1421)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter.moveTempFile(ImageCacheAdapter.java:314)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter$Proxy$_$$_WeldSubclass.moveTempFile(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.image.cache.ImageCacheAdapter.downloadFile(ImageCacheAdapter.java:216)
[ApplicationContainer] 		... 177 common frames omitted
[ApplicationContainer] 	Suppressed: org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void com.oracle.cxcom.chassis.tenant.TenantContext.init() on com.oracle.cxcom.chassis.tenant.TenantContext@7b468079
[ApplicationContainer] 		... 39 common frames omitted
[ApplicationContainer] 	Caused by: java.lang.reflect.InvocationTargetException: null
[ApplicationContainer] 		at jdk.internal.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:83)
[ApplicationContainer] 		... 38 common frames omitted
[ApplicationContainer] 	Caused by: java.lang.IllegalStateException: Not inside a request scope.
[ApplicationContainer] 		at org.glassfish.jersey.internal.guava.Preconditions.checkState(Preconditions.java:169)
[ApplicationContainer] 		at org.glassfish.jersey.process.internal.RequestScope.current(RequestScope.java:153)
[ApplicationContainer] 		at org.glassfish.jersey.inject.hk2.RequestContext.findOrCreate(RequestContext.java:55)
[ApplicationContainer] 		at org.jvnet.hk2.internal.MethodInterceptorImpl.internalInvoke(MethodInterceptorImpl.java:65)
[ApplicationContainer] 		at org.jvnet.hk2.internal.MethodInterceptorImpl.invoke(MethodInterceptorImpl.java:101)
[ApplicationContainer] 		at org.jvnet.hk2.internal.MethodInterceptorInvocationHandler.invoke(MethodInterceptorInvocationHandler.java:39)
[ApplicationContainer] 		at com.sun.proxy.$Proxy109.headers(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.chassis.tenant.TenantContext.init(TenantContext.java:126)
[ApplicationContainer] 		... 42 common frames omitted
[ApplicationContainer] 	Suppressed: org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void com.oracle.cxcom.chassis.tenant.TenantContext.init() on com.oracle.cxcom.chassis.tenant.TenantContext@a669a4d
[ApplicationContainer] 		... 39 common frames omitted
[ApplicationContainer] 	Caused by: java.lang.reflect.InvocationTargetException: null
[ApplicationContainer] 		at jdk.internal.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
[ApplicationContainer] 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 		at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:83)
[ApplicationContainer] 		... 38 common frames omitted
[ApplicationContainer] 	Caused by: java.lang.IllegalStateException: Not inside a request scope.
[ApplicationContainer] 		at org.glassfish.jersey.internal.guava.Preconditions.checkState(Preconditions.java:169)
[ApplicationContainer] 		at org.glassfish.jersey.process.internal.RequestScope.current(RequestScope.java:153)
[ApplicationContainer] 		at org.glassfish.jersey.inject.hk2.RequestContext.findOrCreate(RequestContext.java:55)
[ApplicationContainer] 		at org.jvnet.hk2.internal.MethodInterceptorImpl.internalInvoke(MethodInterceptorImpl.java:65)
[ApplicationContainer] 		at org.jvnet.hk2.internal.MethodInterceptorImpl.invoke(MethodInterceptorImpl.java:101)
[ApplicationContainer] 		at org.jvnet.hk2.internal.MethodInterceptorInvocationHandler.invoke(MethodInterceptorInvocationHandler.java:39)
[ApplicationContainer] 		at com.sun.proxy.$Proxy109.headers(Unknown Source)
[ApplicationContainer] 		at com.oracle.cxcom.chassis.tenant.TenantContext.init(TenantContext.java:126)
[ApplicationContainer] 		... 42 common frames omitted
[ApplicationContainer] Caused by: java.lang.reflect.InvocationTargetException: null
[ApplicationContainer] 	at jdk.internal.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
[ApplicationContainer] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ApplicationContainer] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ApplicationContainer] 	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:83)
[ApplicationContainer] 	... 38 common frames omitted
[ApplicationContainer] Caused by: java.lang.IllegalStateException: Not inside a request scope.
[ApplicationContainer] 	at org.glassfish.jersey.internal.guava.Preconditions.checkState(Preconditions.java:169)
[ApplicationContainer] 	at org.glassfish.jersey.process.internal.RequestScope.current(RequestScope.java:153)
[ApplicationContainer] 	at org.glassfish.jersey.inject.hk2.RequestContext.findOrCreate(RequestContext.java:55)
[ApplicationContainer] 	at org.jvnet.hk2.internal.MethodInterceptorImpl.internalInvoke(MethodInterceptorImpl.java:65)
[ApplicationContainer] 	at org.jvnet.hk2.internal.MethodInterceptorImpl.invoke(MethodInterceptorImpl.java:101)
[ApplicationContainer] 	at org.jvnet.hk2.internal.MethodInterceptorInvocationHandler.invoke(MethodInterceptorInvocationHandler.java:39)
[ApplicationContainer] 	at com.sun.proxy.$Proxy109.headers(Unknown Source)
[ApplicationContainer] 	at com.oracle.cxcom.chassis.tenant.TenantContext.init(TenantContext.java:126)
[ApplicationContainer] 	... 42 common frames omitted

The TenantContext is a RequestScope object and can see in the stack trace above:

org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void com.oracle.cxcom.chassis.tenant.TenantContext.init() on com.oracle.cxcom.chassis.tenant.TenantContext@5f511535

But maybe more relevant:

Caused by: java.lang.IllegalStateException: Not inside a request scope.

Steps to reproduce

I was unable to reproduce this problem on a simple application although have seen it more regularly in the service in the above stack trace which occurs during integration tests which are specifically testing the services fault tolerance strategies, with intermitted failures with the above stack trace.
The issue occurs during a Retry or Fallback in the service which is accessing a Request Scope object.

@spericas
Copy link
Member

spericas commented Jan 4, 2021

Unfortunately based on the description, this looks like a race condition. It may take a bit to reproduce and fix this one.

@spericas spericas self-assigned this Jan 4, 2021
@spericas spericas added this to Needs triage in Backlog via automation Jan 4, 2021
@spericas spericas added the 2.x Issues for 2.x version branch label Jan 4, 2021
@spericas spericas moved this from Needs triage to Normal priority in Backlog Jan 4, 2021
@spericas spericas added this to the 2.2.1 milestone Jan 4, 2021
@spericas
Copy link
Member

spericas commented Jan 4, 2021

@bunto76 Is there any new code that you can share? Or should this be theoretically reproducible with one of the existing Helidon tests that we created for the other related issues?

@bunto76
Copy link
Author

bunto76 commented Jan 4, 2021

In theory should be reproducible with the tests for the related issues. I tried to recreate with a simple example but couldn't but I hadn't yet tried a simple example with a Qualifier. I'll give that a try as well, as the application is using a Qualifier.

@bunto76
Copy link
Author

bunto76 commented Jan 5, 2021

@spericas I tested with a Qualifier, with Retry, Fallback and Circuit Breaker in a simple example but couldn't reproduce that way. I can reproduce it in our service integration tests and will continue to investigate those to see if can identify anything.

@spericas
Copy link
Member

spericas commented Jan 5, 2021

@bunto76 We now have this test based on your earlier findings that we run in our pipeline:

https://github.com/oracle/helidon/tree/master/tests/functional/request-scope

Perhaps you can take a look and let us know if it is representative of the issue that you are seeing. We ran this test on every commit. Anything else of relevance related to your Jenkins setup? Could this be due to pipeline machines being heavily loaded?

@spericas
Copy link
Member

spericas commented Jan 5, 2021

As a quick test, I tried running the test in the link above repeatedly (using @RepeatedTest), but the result is the same. Next step is to look at adding support for concurrent requests.

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running io.helidon.tests.functional.requestscope.TenantTest
[INFO] Tests run: 3000, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 172.204 s - in io.helidon.tests.functional.requestscope.TenantTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 3000, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:58 min
[INFO] Finished at: 2021-01-05T10:00:52-05:00
[INFO] ------------------------------------------------------------------------

@spericas
Copy link
Member

spericas commented Jan 5, 2021

@bunto76
Copy link
Author

bunto76 commented Jan 6, 2021

I can reproduce this locally on my own machine, so not specific to Jenkins env. The stack trace above is from a local fail. It is happening in more than one fault tolerance scenario and have seen this with Retry and Circuit Breaker. The scenario is request scope in a fault tolerance scenario such as when a Retry is invoked due to a failure. It doesn't seem like the request scope tests linked above would cover that?

@m0mus m0mus moved this from Normal priority to In Progress in Backlog Jan 7, 2021
@spericas spericas removed this from the 2.2.1 milestone Jan 28, 2021
@bunto76
Copy link
Author

bunto76 commented Feb 15, 2021

I tested this with 2.2.1 to see if any changes in that release would resolve this issue but I still see exactly the same problem. I will keep trying to create a simple code example outside of the service where we see the problem.

@bunto76
Copy link
Author

bunto76 commented Feb 19, 2021

As discussed attached pom.xml and executable jar.

Call endpoint GET /images:
curl --header 'X-CCTenantId: tenant1' 'http://localhost:8080/images?source=http://localhost:9080/img/rh02-abstract-03-overlay.jpg&height=475&width=475'

2632.zip

@spericas
Copy link
Member

After hours and hours of analysis, I can report back on the multiple conditions that are required to reproduce this problem:

  1. There needs to be more than one JAX-RS applications registered. This results in multiple injection managers in Jersey which is a requirement for the bug to appear. The example has 2 applications: DynamicImagingApplication and NucleusApplication. Code path is different when only one injection manager is available.

  2. There needs to be a CDI bean in request scope with some @Context injection. In this case, Weld will delegate to Jersey/HK2 to complete the injection process.

  3. The bean creation needs to take place in a non-request thread. In the example, this happens because @Retry is defined with a non-zero delay and jitter. The default value of jitter in @Retry is 200 ms.

All three conditions above (the perfect trifecta) are a necessary requirement to produce the problem. For example, a workaround would be to explicitly set the default delay/jitter in @Retry to 0, in which case all execution will take place in request threads.

There is special code in the jersey-weld2-se module to handle more than one injection manager (one for each JAX-RS application). This code uses thread locals to associate injection managers with threads. When migrating a request scope to a non-request thread, and when all other conditions are true, it is necessary to also migrate the injection manager by updating that thread local to avoid the "not in request scope" error. Unfortunately, there are no utilities in Jersey for this, so the fix is updating these (public) thread locals by hand.

Helidon was already handling request scope migration for HK2 and CDI, but this code only works correctly when there is a single injection manager in play. The prototype code, now in a new helper class, is available here:

https://github.com/spericas/helidon/blob/issue-2632/microprofile/fault-tolerance/src/main/java/io/helidon/microprofile/faulttolerance/RequestScopeHelper.java

Because of all the conditions that need to be met to reproduce the problem, it has been challenging to write a test in Helidon. However, a new test is necessary to ensure that any changes in Jersey do not affect this type of Helidon applications. That's the next step.

spericas added a commit to spericas/helidon that referenced this issue Mar 11, 2021
…ultiple applications.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>
@spericas
Copy link
Member

spericas added a commit that referenced this issue Mar 16, 2021
…2856)

* Run concurrent requests for each test.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* New test.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* New helper class to manage request scope logic across threads. Update of thread local variable in Jersey to make sure correct InjectionManager is used in non-request threads.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* Updated test to show the problem described in #2632 using multiple applications.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* Fixed copyright.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>
@spericas
Copy link
Member

PR #2856

Backlog automation moved this from In Progress to Closed Mar 16, 2021
paulparkinson pushed a commit that referenced this issue Mar 29, 2021
…2856)

* Run concurrent requests for each test.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* New test.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* New helper class to manage request scope logic across threads. Update of thread local variable in Jersey to make sure correct InjectionManager is used in non-request threads.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* Updated test to show the problem described in #2632 using multiple applications.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* Fixed copyright.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>
barchetta pushed a commit that referenced this issue Mar 30, 2021
…2856)

* Run concurrent requests for each test.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* New test.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* New helper class to manage request scope logic across threads. Update of thread local variable in Jersey to make sure correct InjectionManager is used in non-request threads.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* Updated test to show the problem described in #2632 using multiple applications.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* Fixed copyright.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>
aseovic pushed a commit to aseovic/helidon that referenced this issue Apr 26, 2021
…elidon-io#2856)

* Run concurrent requests for each test.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* New test.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* New helper class to manage request scope logic across threads. Update of thread local variable in Jersey to make sure correct InjectionManager is used in non-request threads.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* Updated test to show the problem described in helidon-io#2632 using multiple applications.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>

* Fixed copyright.

Signed-off-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.x Issues for 2.x version branch
Projects
Backlog
  
Closed
Development

No branches or pull requests

2 participants