Error screen when clicking on annotation after ending and re-starting session
Describe the bug The user hits an error screen when clicking on annotation after restarting INCEpTION and logging in again via a second window. What also works is to log out and then log in again.
To Reproduce Steps to reproduce the behavior:
- start INCEpTION and log in
- open a document with annotations on the annotation page and keep this window/tab open
- stop INCEpTION
- start INCEpTION again
- log in using a second window/tab in the same browser
- now go back to the first window and click on an annotation to select it
- See error
Note: if you do not do step 5 then step 6 will instead take you to the login screen which seems correct.
There is a second scenario which does not require a restart:
- log in to INCEpTION
- open the same INCEpTION in a second tab/window
- on the first tab/window open a document with annotations on the annotation page and keep this window/tab open
- log out in the second tab/window and log back in again
- select an annotation on the first tab/window
- See error
Expected behavior Good question. Probably at least a better error message about the session having expired or something like that. Or maybe all open windows that belong to the current session could be redirected to the login page when the session ends (via a websocket command).
Screenshots
2024-05-21 16:35:04 WARN [http-nio-8080-exec-6] [SYSTEM] RequestCycleExtra - ********************************
2024-05-21 16:35:04 WARN [http-nio-8080-exec-6] [SYSTEM] RequestCycleExtra - Handling the following exception
org.apache.wicket.behavior.InvalidBehaviorIdException: Cannot find behavior with id '0' on component 'org.apache.wicket.markup.html.panel.EmptyPanel:centerArea:editor' in page '[Page class = de.tudarmstadt.ukp.clarin.webanno.ui.annotation.AnnotationPage, id = 3, render count = 0]'. Perhaps the behavior did not properly implement getStatelessHint() and returned 'true' to indicate that it is stateless instead of returning 'false' to indicate that it is stateful.
at org.apache.wicket.Behaviors.getBehaviorById(Behaviors.java:363) ~[wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.Component.getBehaviorById(Component.java:4477) ~[wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.core.request.handler.ListenerRequestHandler.invokeListener(ListenerRequestHandler.java:216) ~[wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.core.request.handler.ListenerRequestHandler.respond(ListenerRequestHandler.java:202) ~[wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:910) ~[wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:63) ~[wicket-request-9.17.0.jar:9.17.0]
at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:294) [wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:255) [wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:277) [wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:208) [wicket-core-9.17.0.jar:9.17.0]
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:307) [wicket-core-9.17.0.jar:9.17.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:186) [spring-orm-5.3.34.jar:5.3.34]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at de.tudarmstadt.ukp.inception.support.logging.LoggingFilter.doFilter(LoggingFilter.java:58) [classes/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at de.tudarmstadt.ukp.inception.app.config.InceptionServletContextInitializer$1.doFilterInternal(InceptionServletContextInitializer.java:96) [classes/:?]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at de.tudarmstadt.ukp.inception.annotation.storage.OpenCasStorageSessionForRequestFilter.doFilter(OpenCasStorageSessionForRequestFilter.java:51) [classes/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:352) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:164) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:151) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:129) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:221) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.saml2.provider.service.web.Saml2MetadataFilter.doFilterInternal(Saml2MetadataFilter.java:86) [spring-security-saml2-service-provider-5.8.12.jar:5.8.12]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.saml2.provider.service.web.Saml2WebSsoAuthenticationRequestFilter.doFilterInternal(Saml2WebSsoAuthenticationRequestFilter.java:187) [spring-security-saml2-service-provider-5.8.12.jar:5.8.12]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:117) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:225) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:190) [spring-security-web-5.8.12.jar:5.8.12]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) [spring-web-5.3.34.jar:5.3.34]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) [spring-boot-actuator-2.7.18.jar:2.7.18]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.3.34.jar:5.3.34]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.34.jar:5.3.34]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:761) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:388) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-embed-core-9.0.89.jar:9.0.89]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) [tomcat-embed-core-9.0.89.jar:9.0.89]
at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
Please complete the following information:
- Version and build ID: 32.2