Hi Team, there is one issue we are facing with <GD...
# gooddata-cn
n
Hi Team, there is one issue we are facing with GD.CN version 2.1 (this was not an issue with 1.7 version). Once auth0 session expires ( after 1 hour), gooddata urls fails for the first time rather then doing reauthentication. If user refresh again, then it works. In network logs, we see the url: /api/v1/entities/workspaces?include=workspaces&page=0&size=250&sort=name returning 500 error (rather than 401). And in k8, there is an error in pod gooddata-cn-metadata-api : 2022-09-19 133934.064 IST{exc: com.gooddata.oauth2.server.common.CookieDecodeException: JWT from cookie decoding error at com.gooddata.oauth2.server.servlet.CookieSecurityContextRepository.loadContext(CookieSecurityContextRepository.kt:75) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilt… +cc @Robert Moucha, @Jan Soubusta,@Kshirod Mohanty, @rohit mathur, @Alex Kearns, @Vivek M
Here is the full stack trace: {"exc":"com.gooddata.oauth2.server.common.CookieDecodeException: JWT from cookie decoding error at com.gooddata.oauth2.server.servlet.CookieSecurityContextRepository.loadContext(CookieSecurityContextRepository.kt:75) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:98) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.cloud.sleuth.instrument.web.servlet.TracingFilter.doFilter(TracingFilter.java:68) at org.springframework.cloud.sleuth.autoconfig.instrument.web.TraceWebServletConfiguration$LazyTracingFilter.doFilter(TraceWebServletConfiguration.java:131) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.zalando.logbook.servlet.LogbookFilter.doFilter(LogbookFilter.java:74) at org.zalando.logbook.servlet.SecureLogbookFilter.doFilter(SecureLogbookFilter.java:32) at org.zalando.logbook.servlet.HttpFilter.doFilter(HttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.ForwardedHeaderFilter.doFilterInternal(ForwardedHeaderFilter.java:156) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.springframework.cloud.sleuth.instrument.web.tomcat.TraceValve.invoke(TraceValve.java:103) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1787) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Unknown Source) Caused by: org.springframework.security.oauth2.jwt.BadJwtException: An error occurred while attempting to decode the Jwt: Expired JWT at org.springframework.security.oauth2.jwt.NimbusJwtDecoder.createJwt(NimbusJwtDecoder.java:180) at org.springframework.security.oauth2.jwt.NimbusJwtDecoder.decode(NimbusJwtDecoder.java:137) at com.gooddata.oauth2.server.servlet.CookieSecurityContextRepository.loadContext(CookieSecurityContextRepository.kt:70) ... 58 more Caused by: com.nimbusds.jwt.proc.BadJWTException: Expired JWT at com.nimbusds.jwt.proc.DefaultJWTClaimsVerifier.verify(DefaultJWTClaimsVerifier.java:342) at com.nimbusds.jwt.proc.DefaultJWTProcessor.verifyClaims(DefaultJWTProcessor.java:271) at com.nimbusds.jwt.proc.DefaultJWTProcessor.process(DefaultJWTProcessor.java:373) at com.nimbusds.jwt.proc.DefaultJWTProcessor.process(DefaultJWTProcessor.java:303) at org.springframework.security.oauth2.jwt.NimbusJwtDecoder.createJwt(NimbusJwtDecoder.java:154) ... 60 more ", "level":"ERROR", "logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]", "msg":"Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception", "spanId":"43d84843cd777927", "thread":"http-nio-9007-exec-10", "traceId":"43d84843cd777927", "ts":"2022-09-19 065707.905"}
j
cc: @Peter Plochan
p
Hi @Narinder Kumar, this should not happen, the backend should definitely return 401. I will try to investigate it and find the problem. I will then provide an update about the findings into this thread. cc @Lubos Hilse
r
Hi @Peter Plochan, @Lubos Hilse any update on this
p
Hi @rohit, not yet, sorry for the delay…
l
@rohit Hello, we are investigating and reproducing this issue, once we have further update or potential fix - I will let you know. Thank you
n
Hi @Lubos Hilse, @Peter Plochan, do we have any further update on this?
p
@Narinder Kumar we discovered the cause of 500s and we’re working on the fix now. When fixed, we are going to deliver it in the GD CN hotfix.
n
Thanks @Peter Plochan. There was one more issue which was discussed in other thread. https://gooddataconnect.slack.com/archives/C01UR5BGAHY/p1662986013601139?thread_ts=1659096251.115239&amp;cid=C01UR5BGAHY. Hope fix for that issue can also be provided in planned hotfix release.
r
@Peter Plochan please advise on tentative timeline for this patch / hotfix release please
p
Hi @rohit, the patch is planned for the next week. I will update you when done.
l
Hello @Narinder Kumar @rohit our current plan is to deliver the hotfix for TR2.1.1 by this Tuesday 11th of October. We will confirm it when it is released.
small update, we release the version due to deep testing for tomorrow 12th of Oct. I am sorry for the delay.
Hello HF TR2.1.1 has been released, please check https://gooddataconnect.slack.com/archives/C01M7S4NQAD/p1665581171899809