0

For two weeks I was waiting that may be some of Vaadin gurus will help me with this exception. My application starts successfully and displays everything as expected, but whenever I am clicking on browser's reload button, it throws this unexplainable exception. I did check all my code very thoroughly and there isn't a single static or singleton components in it. I even offered a bounty for the answer but nobody was interested.

Finally, I decided to upgrade to the latest Vaadin version (24.0.0). I hoped, that even if this problem isn't resolved, Vaadin will provide better diagnostic and will tell what component it doesn't like. Unfortunately, my hopes were not heard. The stack trace is slightly different than in Vaadin 23, but still does not provide any useful information.

2023-03-19T22:36:33.460-07:00 ERROR 17608 --- [nio-8082-exec-1] c.v.flow.router.InternalServerError : There was an exception while trying to navigate to ''

java.lang.IllegalStateException: Can't move a node from one state tree to another. If this is intentional, first remove the node from its current state tree by calling removeFromTree at com.vaadin.flow.internal.StateNode.doSetTree(StateNode.java:739) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.internal.StateNode.lambda$setTree$3(StateNode.java:380) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.internal.StateNode.visitNodeTree(StateNode.java:688) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.internal.StateNode.setTree(StateNode.java:380) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.internal.StateNode.setParent(StateNode.java:274) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.internal.nodefeature.NodeFeature.attachPotentialChild(NodeFeature.java:80) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.internal.nodefeature.StateNodeNodeList.add(StateNodeNodeList.java:55) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.internal.nodefeature.ElementChildrenList.add(ElementChildrenList.java:44) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.dom.impl.AbstractNodeStateProvider.insertChild(AbstractNodeStateProvider.java:105) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.dom.Node.insertChild(Node.java:386) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.dom.Node.appendChild(Node.java:163) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.dom.Node.appendChild(Node.java:147) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.component.internal.UIInternalUpdater.updateRoot(UIInternalUpdater.java:71) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.component.internal.UIInternals.showRouteTarget(UIInternals.java:767) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.handle(AbstractNavigationStateRenderer.java:231) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.component.internal.JavaScriptNavigationStateRenderer.handle(JavaScriptNavigationStateRenderer.java:78) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.component.UI.handleNavigation(UI.java:1785) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.component.UI.renderViewForRoute(UI.java:1748) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.component.UI.connectClient(UI.java:1661) ~[flow-server-24.0.0.jar:24.0.0] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na] at com.vaadin.flow.server.communication.rpc.PublishedServerEventHandlerRpcHandler.invokeMethod(PublishedServerEventHandlerRpcHandler.java:222) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.communication.rpc.PublishedServerEventHandlerRpcHandler.invokeMethod(PublishedServerEventHandlerRpcHandler.java:199) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.communication.rpc.PublishedServerEventHandlerRpcHandler.invokeMethod(PublishedServerEventHandlerRpcHandler.java:149) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.communication.rpc.PublishedServerEventHandlerRpcHandler.handleNode(PublishedServerEventHandlerRpcHandler.java:132) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.communication.rpc.AbstractRpcInvocationHandler.handle(AbstractRpcInvocationHandler.java:74) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocationData(ServerRpcHandler.java:438) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$1(ServerRpcHandler.java:419) ~[flow-server-24.0.0.jar:24.0.0] at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na] at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:419) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:320) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:114) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1534) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:399) ~[flow-server-24.0.0.jar:24.0.0] at com.vaadin.flow.spring.SpringServlet.service(SpringServlet.java:106) ~[vaadin-spring-24.0.0.jar:na] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:441) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:335) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:295) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:141) ~[spring-webmvc-6.0.6.jar:6.0.6] at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:178) ~[spring-webmvc-6.0.6.jar:6.0.6] at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:51) ~[spring-webmvc-6.0.6.jar:6.0.6] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.6.jar:6.0.6] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar:6.0.6] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar:6.0.6] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.0.6.jar:6.0.6] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:731) ~[tomcat-embed-core-10.1.5.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar:6.0.6] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar:6.0.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar:6.0.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar:6.0.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar:6.0.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar:6.0.6] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar:6.0.6] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

While at the beginning I did like working with Vaadin, now I am regretting the time I lost with it.

Gary Greenberg
  • 468
  • 1
  • 9
  • 22
  • Without more information about the project, it's hard to say anything concrete. I would recommend making sure you have everything stored in version control and start removing things until you can isolate the cause. There are tools that can help, such as git's bisect, but they have their own requirements. – ollitietavainen Mar 20 '23 at 14:06
  • I didn't understand your comment. What things I should remove? – Gary Greenberg Mar 21 '23 at 03:15
  • The problem is that it is not causing by any of my code action. Application is working as expected. Only when I am clicking on reload button in the browser, exception is thrown. I don't know what is happening during the refresh. – Gary Greenberg Mar 21 '23 at 04:17
  • It's a side-effect of something in your codebase. If you remove code, you're eventually going to be removing the part that causes the issue. Fastest way without extra info is binary search - remove 50% of eg. Views. If problem persists, the cause is in the remaining 50%. Repeat until you have located the cause or you have a minimal example. – ollitietavainen Mar 21 '23 at 05:39
  • I don't know how to remove 50% of the code. My application is a single-page app with a bunch of dialogs and menus. I did try to comment out most of them but it didn't help. I can't remove the base layouts. I did find a solution however. When I annotated main layout with @PreserveOnRefresh it stopped throwing this exception on reload. I don't know how it is working and will it work forever. Vaadin team shall definitely improve diagnostic and identify offending component in their exception message. – Gary Greenberg Mar 22 '23 at 03:49
  • Don't comment things out. Just delete them. You have version control, right? You can always get back to the previous state. Do you need to open a dialog to get the issue? If not, delete the dialog. Delete the code that creates the menu. Delete delete delete. You can always go back. Don't comment. Delete. – ollitietavainen Mar 22 '23 at 07:17
  • And you _can_ delete base layouts. You can delete anything you want. – ollitietavainen Mar 22 '23 at 07:18

0 Answers0