[ 
https://issues.apache.org/jira/browse/WICKET-1471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12593419#action_12593419
 ] 

Juliano Viana commented on WICKET-1471:
---------------------------------------

Hi,

I'm beginning to realize that my original interpretation of the bug is wrong.
First of all the app is not using redirect to render strategy, its using 
redirect to buffer strategy.
So the original problem should not have happened in the first place.
The reason why it did happen is completely different than I thought: in 
redirect to buffer, the buffered response is kept in a HashMap in the 
WebApplication class (bufferedResponses), and this is not clustered at all.
So when the second request hits the other cluster server, the other server has 
no choice but to re-render the page again. And that means the application is 
behaving as a REDIRECT_TO_RENDER application but with REDIRECT_TO_BUFFER 
settings. This in turn causes the feedback messages to be cleared too soon.
So my patch is just a workaround (and it introduces some subtle bugs). I 
suggest this issue be closed and replaced with an issue to fix the redirect to 
buffer strategy in a clustered environment.

 - Juliano



> FeedbackPanel does not work properly in clustered environment
> -------------------------------------------------------------
>
>                 Key: WICKET-1471
>                 URL: https://issues.apache.org/jira/browse/WICKET-1471
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.3.2
>            Reporter: Juliano Viana
>             Fix For: 1.3.4
>
>         Attachments: WebSession.patch, WicketTesterTest.patch
>
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to