Re: Possible bug / edge case found where page is not detached
Now that is a stellar bug report. From: Bas Gooren Sent: Sunday, July 25, 2021 12:06 AM To: users@wicket.apache.org ; Sven Meier Subject: Re: Possible bug / edge case found where page is not detached Hi Sven, Done - https://issues.apache.org/jira/browse/WICKET-6908 Met vriendelijke groet, Kind regards, Bas Gooren Op 24 juli 2021 bij 10:29:38, Sven Meier (s...@meiers.net) schreef: Hi Bas, that sounds like a bug. Your quickstart didn't make it through the mailing list, would you please attach it to a new Jira issue? Thanks Sven Am 23. Juli 2021 19:30:46 MESZ schrieb Bas Gooren : >Hi all, > >Today I spent the better part of my day investigating a bug report >regarding a hibernate LazyInitializationException. >Since we use detaching models everywhere and (in general) never see >such >issues anymore, this one was interesting :-) > >After much debugging I found out what is happening. > >We have a page which has a database model + links for prev/next item >(in >the database). >When the users double-clicks on one of the links, the first click is >OK, >and the second click throws a StalePageException during request cycle >processing. > >So far, normal. > >However, stepping through the wicket code, this is what happens: > >1) Resolve to ListenerRequestHandler, execute it, throws >StalePageException >2) exception mapper handles this and we execute a >RenderPageRequestHandler, >which re-renders the page >3) the request cycle detaches, which delegates in part >to RequestHandlerExecutor.detach() >4) The handlers to detach are both handlers from step 1 and 2; During >the >detach of ListenerRequestHandler, it initializes ListenerLogData, which >(in >the PageLogData ctor) throws the StalePageException again! >5) The second handler (RenderPageRequestHandler) is not detached, thus >all >models in the page are not detached >6) The user clicks on a link and boom, the models are all still >attached >and there we get the LazyInitializationException > >I think that (a) RequestHandlerExecutor.detach() should ensure all >handlers >are detached, and (b) that failing to collect LogData should not stop >the >detaching of a request handler. > >What do you think? > >I tried to make the simplest possible Quickstart to demonstrate this. > >Weird stuff: on the homepage of the quick start, the page is properly >detached when a stale link is clicked; >On another (test) page, the page is not properly detached. > >Steps to reproduce: > >Run Quickstart >Click on “Test” link on homepage >Observe that the following is logged: > >Model still attached? false >Page detaching > >Now click on "Click me (stale link)!” >Now refresh the page (re-render) > >Observe that the following is logged: > >Model still attached? true >Page detaching > >—> So the page was not detached > >These steps don’t have the same result on the homepage. So my guess is >there is some relation to the fact that we are interacting with a >stateful, >non-mounted page. > >Met vriendelijke groet, >Kind regards, > >Bas Gooren [EXTERNAL EMAIL] CAUTION: This email originated from outside of Telenav. DO NOT CLICK links or attachments unless you recognize the sender and know the content is safe.
Re: Possible bug / edge case found where page is not detached
Hi Sven, Done - https://issues.apache.org/jira/browse/WICKET-6908 Met vriendelijke groet, Kind regards, Bas Gooren Op 24 juli 2021 bij 10:29:38, Sven Meier (s...@meiers.net) schreef: Hi Bas, that sounds like a bug. Your quickstart didn't make it through the mailing list, would you please attach it to a new Jira issue? Thanks Sven Am 23. Juli 2021 19:30:46 MESZ schrieb Bas Gooren : >Hi all, > >Today I spent the better part of my day investigating a bug report >regarding a hibernate LazyInitializationException. >Since we use detaching models everywhere and (in general) never see >such >issues anymore, this one was interesting :-) > >After much debugging I found out what is happening. > >We have a page which has a database model + links for prev/next item >(in >the database). >When the users double-clicks on one of the links, the first click is >OK, >and the second click throws a StalePageException during request cycle >processing. > >So far, normal. > >However, stepping through the wicket code, this is what happens: > >1) Resolve to ListenerRequestHandler, execute it, throws >StalePageException >2) exception mapper handles this and we execute a >RenderPageRequestHandler, >which re-renders the page >3) the request cycle detaches, which delegates in part >to RequestHandlerExecutor.detach() >4) The handlers to detach are both handlers from step 1 and 2; During >the >detach of ListenerRequestHandler, it initializes ListenerLogData, which >(in >the PageLogData ctor) throws the StalePageException again! >5) The second handler (RenderPageRequestHandler) is not detached, thus >all >models in the page are not detached >6) The user clicks on a link and boom, the models are all still >attached >and there we get the LazyInitializationException > >I think that (a) RequestHandlerExecutor.detach() should ensure all >handlers >are detached, and (b) that failing to collect LogData should not stop >the >detaching of a request handler. > >What do you think? > >I tried to make the simplest possible Quickstart to demonstrate this. > >Weird stuff: on the homepage of the quick start, the page is properly >detached when a stale link is clicked; >On another (test) page, the page is not properly detached. > >Steps to reproduce: > >Run Quickstart >Click on “Test” link on homepage >Observe that the following is logged: > >Model still attached? false >Page detaching > >Now click on "Click me (stale link)!” >Now refresh the page (re-render) > >Observe that the following is logged: > >Model still attached? true >Page detaching > >—> So the page was not detached > >These steps don’t have the same result on the homepage. So my guess is >there is some relation to the fact that we are interacting with a >stateful, >non-mounted page. > >Met vriendelijke groet, >Kind regards, > >Bas Gooren
Re: Possible bug / edge case found where page is not detached
Hi Bas, that sounds like a bug. Your quickstart didn't make it through the mailing list, would you please attach it to a new Jira issue? Thanks Sven Am 23. Juli 2021 19:30:46 MESZ schrieb Bas Gooren : >Hi all, > >Today I spent the better part of my day investigating a bug report >regarding a hibernate LazyInitializationException. >Since we use detaching models everywhere and (in general) never see >such >issues anymore, this one was interesting :-) > >After much debugging I found out what is happening. > >We have a page which has a database model + links for prev/next item >(in >the database). >When the users double-clicks on one of the links, the first click is >OK, >and the second click throws a StalePageException during request cycle >processing. > >So far, normal. > >However, stepping through the wicket code, this is what happens: > >1) Resolve to ListenerRequestHandler, execute it, throws >StalePageException >2) exception mapper handles this and we execute a >RenderPageRequestHandler, >which re-renders the page >3) the request cycle detaches, which delegates in part >to RequestHandlerExecutor.detach() >4) The handlers to detach are both handlers from step 1 and 2; During >the >detach of ListenerRequestHandler, it initializes ListenerLogData, which >(in >the PageLogData ctor) throws the StalePageException again! >5) The second handler (RenderPageRequestHandler) is not detached, thus >all >models in the page are not detached >6) The user clicks on a link and boom, the models are all still >attached >and there we get the LazyInitializationException > >I think that (a) RequestHandlerExecutor.detach() should ensure all >handlers >are detached, and (b) that failing to collect LogData should not stop >the >detaching of a request handler. > >What do you think? > >I tried to make the simplest possible Quickstart to demonstrate this. > >Weird stuff: on the homepage of the quick start, the page is properly >detached when a stale link is clicked; >On another (test) page, the page is not properly detached. > >Steps to reproduce: > >Run Quickstart >Click on “Test” link on homepage >Observe that the following is logged: > >Model still attached? false >Page detaching > >Now click on "Click me (stale link)!” >Now refresh the page (re-render) > >Observe that the following is logged: > >Model still attached? true >Page detaching > >—> So the page was not detached > >These steps don’t have the same result on the homepage. So my guess is >there is some relation to the fact that we are interacting with a >stateful, >non-mounted page. > >Met vriendelijke groet, >Kind regards, > >Bas Gooren
Possible bug / edge case found where page is not detached
Hi all, Today I spent the better part of my day investigating a bug report regarding a hibernate LazyInitializationException. Since we use detaching models everywhere and (in general) never see such issues anymore, this one was interesting :-) After much debugging I found out what is happening. We have a page which has a database model + links for prev/next item (in the database). When the users double-clicks on one of the links, the first click is OK, and the second click throws a StalePageException during request cycle processing. So far, normal. However, stepping through the wicket code, this is what happens: 1) Resolve to ListenerRequestHandler, execute it, throws StalePageException 2) exception mapper handles this and we execute a RenderPageRequestHandler, which re-renders the page 3) the request cycle detaches, which delegates in part to RequestHandlerExecutor.detach() 4) The handlers to detach are both handlers from step 1 and 2; During the detach of ListenerRequestHandler, it initializes ListenerLogData, which (in the PageLogData ctor) throws the StalePageException again! 5) The second handler (RenderPageRequestHandler) is not detached, thus all models in the page are not detached 6) The user clicks on a link and boom, the models are all still attached and there we get the LazyInitializationException I think that (a) RequestHandlerExecutor.detach() should ensure all handlers are detached, and (b) that failing to collect LogData should not stop the detaching of a request handler. What do you think? I tried to make the simplest possible Quickstart to demonstrate this. Weird stuff: on the homepage of the quick start, the page is properly detached when a stale link is clicked; On another (test) page, the page is not properly detached. Steps to reproduce: Run Quickstart Click on “Test” link on homepage Observe that the following is logged: Model still attached? false Page detaching Now click on "Click me (stale link)!” Now refresh the page (re-render) Observe that the following is logged: Model still attached? true Page detaching —> So the page was not detached These steps don’t have the same result on the homepage. So my guess is there is some relation to the fact that we are interacting with a stateful, non-mounted page. Met vriendelijke groet, Kind regards, Bas Gooren - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org