Environment: Tomcat 5.5.25, Java 6, non-sticky session clustering, redirect to render strategy.
Consider the following scenario:
- Two tomcat instances running a Wicket application in clustered mode
- Application contains a page that has a form and a feedback panel
- Web browser posts the form. The post is processed in cluster node A
- Application in cluster node A validates the form and produces some feedback messages
- Request ends, Wicket -
>clears all component feedback messages from the session<- , replicates the session, and issues a redirect to render the page
- Browser follows the redirect and hits the application in node B
- Application in node B renders the page but, because there are no feedback messages on the session , the feedback panel is not made visible
The solution I found (don't know if its the best one) is to change WebSession.java to clear component feedback messages only if the current request is not a redirect.
This solution breaks one test case (WicketTesterTest) because it takes the broken behavior for granted.
I will attach a patch to WebSession and to WicketTesterTest.