[
https://issues.apache.org/jira/browse/WICKET-7185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Matthias Streller updated WICKET-7185:
--------------------------------------
Description:
When a page using at least two _AbstractAjaxTimerBehavior_ instances is
refreshed while one of the timers also send a request, the page enters an
endless refresh loop.
The problem occurs only, if the URL contains page parameters.
Attached I provided a small working example. Steps to reproduce:
# Visit demo page with page parameters e.g.
[https://localhost:8443?foo=bar|https://localhost:8443/?foo=bar]
# After page is loaded refresh page
After that, the page will start to refresh itself in an interval of approx 10
seconds.
The timer event runs into an StalePageException, which causes a new refresh of
the page:
{code:java}
[qtp1705929636-34] WARN RequestCycleExtra - Handling the following exception
org.apache.wicket.core.request.mapper.StalePageException: A request to page
'[Page class = org.tracetronic.HomePage, id = 0, render count = 6]' has been
made with stale 'renderCount'. The page will be re-rendered.{code}
It is unclear why the timer event triggered by the newly rendered page result
in an invalid request again.
What's also interesting, if the page uses only one AbstractAjaxTimerBehavior,
there will be only one 'unwanted' refresh of the page and after that the page
continues to work normally.
was:
When a page using at least two _AbstractAjaxTimerBehavior_ instances is
refreshed while one of the timers also send a request, the page enters an
endless refresh loop.
The problem occurs only, if the URL contains page parameters.
Attached I provided a small working example. Steps to reproduce: # Visit demo
page with page parameters e.g.
[https://localhost:8443?foo=bar|https://localhost:8443/?foo=bar]
# After page is loaded refresh page
After that, the page will start to refresh itself in an interval of approx 10
seconds.
The timer event runs into an StalePageException, which causes a new refresh of
the page:
{code:java}
[qtp1705929636-34] WARN RequestCycleExtra - Handling the following exception
org.apache.wicket.core.request.mapper.StalePageException: A request to page
'[Page class = org.tracetronic.HomePage, id = 0, render count = 6]' has been
made with stale 'renderCount'. The page will be re-rendered.{code}
It is unclear why the timer event triggered by the newly rendered page result
in an invalid request again.
What's also interesting, if the page uses only one AbstractAjaxTimerBehavior,
there will be only one 'unwanted' refresh of the page and after that the page
continues to work normally.
> Page refresh triggers endless refresh loop if multiple
> AbstractAjaxTimerBehavior are used
> -----------------------------------------------------------------------------------------
>
> Key: WICKET-7185
> URL: https://issues.apache.org/jira/browse/WICKET-7185
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 9.23.0, 10.9.1
> Environment: - Browser: Chrome, Firefox
> - JDK 17
> Reporter: Matthias Streller
> Priority: Major
> Attachments: refresh-loop-quickstart.zip
>
>
> When a page using at least two _AbstractAjaxTimerBehavior_ instances is
> refreshed while one of the timers also send a request, the page enters an
> endless refresh loop.
>
> The problem occurs only, if the URL contains page parameters.
>
> Attached I provided a small working example. Steps to reproduce:
> # Visit demo page with page parameters e.g.
> [https://localhost:8443?foo=bar|https://localhost:8443/?foo=bar]
> # After page is loaded refresh page
>
> After that, the page will start to refresh itself in an interval of approx 10
> seconds.
>
> The timer event runs into an StalePageException, which causes a new refresh
> of the page:
> {code:java}
> [qtp1705929636-34] WARN RequestCycleExtra - Handling the following exception
> org.apache.wicket.core.request.mapper.StalePageException: A request to page
> '[Page class = org.tracetronic.HomePage, id = 0, render count = 6]' has been
> made with stale 'renderCount'. The page will be re-rendered.{code}
> It is unclear why the timer event triggered by the newly rendered page result
> in an invalid request again.
>
> What's also interesting, if the page uses only one AbstractAjaxTimerBehavior,
> there will be only one 'unwanted' refresh of the page and after that the page
> continues to work normally.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)