we have an application built using the GoodData.UI...
# gooddata-cn
p
we have an application built using the GoodData.UI Accelerator Toolkit and we've tried to upgrade our gooddata-sdk-ui dependencies to 8.10.0 as recommended with the GoodData.CN 2.1.0 version but we can no longer fetch any gooddata insights, here is the error we're noticing in our GoodData logs, has anyone experienced this issue or have any ideas on why this might be occurring ?
Copy code
{
  "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": "d2036c2e0f282311",
  "thread": "http-nio-9007-exec-17",
  "traceId": "d2036c2e0f282311",
  "ts": "2022-09-15 23:47:17.920"
}
v
Clear cookie data in the browser? Potentially the old application still has artifacts cached in the browser from the old client library versions that it is still trying to use. Also, with GD 2.1 are you starting from a fresh container? Assuming you are developing with something like docker compose locally. I have not tried to upgrade to 2.1 yet, but these are issues we ran into with the 2.0 upgrade.
j
I would also recommend clearing cookie data as the first step. Depending on how that goes, we can work from there.
v
hey @Vincil Bishop and @Jan Rehanek - this is a backend workflow and not a UI based flow. From what we are observing, the spring system that gooddata-cn uses in the backend seems to have JWT expired issue even for a request that originated few seconds ago.
j
cc: @Peter Plochan
p
Hi @Vivek M @Phanindra when this error occurs? Directly after the authentication or e.g. in an hour when the authentication session expires (meaning that the Access or ID JWT token is expired)? If the auth. session is expired and you’re getting 500s from the backend, this is the same issue as the one reported in https://gooddataconnect.slack.com/archives/C01P3H2HTDL/p1663599018135419 which is under the investigation right now.
v
it is the same issue
👌 1