-
Type: Bug
-
Status: Resolved
-
Priority: Minor
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 10.6.0, arender-2.0.0
-
Component/s: Nuxeo Connector
-
Tags:
-
Team:PLATFORM
-
Sprint:nxplatform #36, nxplatform #35
-
Story Points:2
During QA we've met the exception below:
2021-05-28 15:02:44,469 ERROR [image-servlet-pool-5] [com.arondor.viewer.common.documentservice.RemoteActionExecutor] An error occured while executing a remote action from ServletDocumentService org.springframework.security.access.AccessDeniedException: No OAuth2 credentials found at com.nuxeo.ecm.arender.client.NuxeoClientFactoryImpl.getClient(NuxeoClientFactoryImpl.java:76) at com.nuxeo.ecm.arender.client.NuxeoClientFacade.client(NuxeoClientFacade.java:93) at com.nuxeo.ecm.arender.client.NuxeoClientFacade.fetchDocument(NuxeoClientFacade.java:100) at com.nuxeo.ecm.arender.client.NuxeoClientFacade.getDocumentTitle(NuxeoClientFacade.java:129) at com.nuxeo.ecm.arender.connector.BlobDocumentAccessor.getDocumentTitle(BlobDocumentAccessor.java:63) at com.arondor.viewer.common.rendition.connector.ClientDocumentService.mayProcessAnnotationRendition(ClientDocumentService.java:739) at com.arondor.viewer.common.rendition.connector.ClientDocumentService.getPageImage(ClientDocumentService.java:1460) at com.arondor.viewer.common.documentservice.DocumentServiceDelegate$12.execute(DocumentServiceDelegate.java:371) at com.arondor.viewer.common.documentservice.DocumentServiceDelegate$12.execute(DocumentServiceDelegate.java:366) at com.arondor.viewer.common.documentservice.RemoteActionExecutor.execute(RemoteActionExecutor.java:46) at com.arondor.viewer.common.documentservice.DocumentServiceDelegate.execute(DocumentServiceDelegate.java:832) at com.arondor.viewer.common.documentservice.DocumentServiceDelegate.getPageImage(DocumentServiceDelegate.java:365) at com.arondor.viewer.common.documentservice.DocumentServiceDelegate$$FastClassBySpringCGLIB$$b3c6a960.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88) at com.arondor.viewer.common.logger.LoggerInterceptor.doBasicLogging(LoggerInterceptor.java:72) at jdk.internal.reflect.GeneratedMethodAccessor72.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) at com.arondor.viewer.server.servlet.ServletDocumentService$$EnhancerBySpringCGLIB$$1bd19eda.getPageImage(<generated>) at com.arondor.viewer.server.servlet.LegacySyncImageServlet.doTransferImage(LegacySyncImageServlet.java:88) at com.arondor.viewer.server.servlet.LegacySyncImageServlet.doGet(LegacySyncImageServlet.java:51) at com.arondor.viewer.server.servlet.LegacySyncImageServlet.doGet(LegacySyncImageServlet.java:108) at com.arondor.viewer.server.servlet.ImageServlet$PageImageRunnable.run(ImageServlet.java:111) at org.springframework.security.concurrent.DelegatingSecurityContextRunnable.run(DelegatingSecurityContextRunnable.java:84) at java.base/java.lang.Thread.run(Thread.java:836) 2021-05-28 15:02:44,579 WARN [image-servlet-pool-5] [org.elasticsearch.client.RestClient] request [PUT http://arender-monitor-elasticsearch-client.int-arender-kleturc.svc.cluster.local:9200/arender-performance/_mapping/_doc?include_type_name=true ] returned 1 warnings: [299 Elasticsearch-7.9.3-c4138e51121ef06a6404866cddc601906fe5c868 "[types removal] Using include_type_name in put mapping requests is deprecated. The parameter will be removed in the next major version."] Exception in thread "image-servlet-pool-5" com.arondor.viewer.common.documentservice.DocumentServiceDelegateNotAvailable: Remote action cannot be executed: max tries reached. at com.arondor.viewer.common.documentservice.RemoteActionExecutor.execute(RemoteActionExecutor.java:96) at com.arondor.viewer.common.documentservice.DocumentServiceDelegate.execute(DocumentServiceDelegate.java:832) at com.arondor.viewer.common.documentservice.DocumentServiceDelegate.getPageImage(DocumentServiceDelegate.java:365) at com.arondor.viewer.common.documentservice.DocumentServiceDelegate$$FastClassBySpringCGLIB$$b3c6a960.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88) at com.arondor.viewer.common.logger.LoggerInterceptor.doBasicLogging(LoggerInterceptor.java:72) at jdk.internal.reflect.GeneratedMethodAccessor72.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) at com.arondor.viewer.server.servlet.ServletDocumentService$$EnhancerBySpringCGLIB$$1bd19eda.getPageImage(<generated>) at com.arondor.viewer.server.servlet.LegacySyncImageServlet.doTransferImage(LegacySyncImageServlet.java:88) at com.arondor.viewer.server.servlet.LegacySyncImageServlet.doGet(LegacySyncImageServlet.java:51) at com.arondor.viewer.server.servlet.LegacySyncImageServlet.doGet(LegacySyncImageServlet.java:108) at com.arondor.viewer.server.servlet.ImageServlet$PageImageRunnable.run(ImageServlet.java:111) at org.springframework.security.concurrent.DelegatingSecurityContextRunnable.run(DelegatingSecurityContextRunnable.java:84) at java.base/java.lang.Thread.run(Thread.java:836)
The data stored in Hazelcast has a TTL and a MaxIdle set to 1h. We suppose that once the TTL is reached the data is deleted from the Hazelcast map, even if the MaxIdle is not yet reached.
In the end, we will subscribe to the SessionDestroyedEvent to remove the data from DataStore and remove the TTL/maxIdle from OAuth2 tokens.