Uploaded image for project: 'Nuxeo Enhanced Viewer'
  1. Nuxeo Enhanced Viewer
  2. NEV-437

Fix hazelcast authorized client expiration time

    XMLWordPrintable

    Details

    • Tags:
    • Team:
      PLATFORM
    • Sprint:
      nxplatform #36, nxplatform #35
    • Story Points:
      2

      Description

      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.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: