Martijn Dashorst created WICKET-5998:
----------------------------------------

             Summary: Page is detached twice in same AJAX request
                 Key: WICKET-5998
                 URL: https://issues.apache.org/jira/browse/WICKET-5998
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 7.0.0
            Reporter: Martijn Dashorst
            Priority: Minor


While debugging some code I noticed that detaching happens twice during the 
same (AJAX) request.

First through `ListenerInterfaceRequestHandler.detach()` and next through 
`AjaxRequestHandler.detach(IRequestCycle)`.

The following stack traces show the code paths.

{code}
Thread [qtp1297836716-57] (Suspended (breakpoint at line 858 in MyWebPage))     
        MyWebPage.onDetach() line: 858  
        MyWebPage(Component).detach() line: 1162        
        PageAndComponentProvider(PageProvider).detach() line: 330       
        ListenerInterfaceRequestHandler.detach(IRequestCycle) line: 128 
        RequestCycle$HandlerExecutor.detach(IRequestHandler) line: 876  
        RequestCycle$HandlerExecutor(RequestHandlerStack).detach() line: 180    
        RequestCycle.onDetach() line: 641       
        RequestCycle.detach() line: 594 
        RequestCycle.processRequestAndDetach() line: 297        
        WicketFilter.processRequestCycle(RequestCycle, WebResponse, 
HttpServletRequest, HttpServletResponse, FilterChain) line: 261     
        WicketFilter.processRequest(ServletRequest, ServletResponse, 
FilterChain) line: 203     
        WicketFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 284   




Thread [qtp1297836716-57] (Suspended (breakpoint at line 858 in MyWebPage))     
        MyWebPage.onDetach() line: 858  
        MyWebPage(Component).detach() line: 1162        
        AjaxRequestHandler$1(PartialPageUpdate).detach(IRequestCycle) line: 417 
        AjaxRequestHandler.detach(IRequestCycle) line: 277      
        RequestCycle$HandlerExecutor.detach(IRequestHandler) line: 876  
        RequestCycle$HandlerExecutor(RequestHandlerStack).detach() line: 180    
        RequestCycle.onDetach() line: 641       
        RequestCycle.detach() line: 594 
        RequestCycle.processRequestAndDetach() line: 297        
        WicketFilter.processRequestCycle(RequestCycle, WebResponse, 
HttpServletRequest, HttpServletResponse, FilterChain) line: 261     
        WicketFilter.processRequest(ServletRequest, ServletResponse, 
FilterChain) line: 203     
        WicketFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 284   
{code}

Is this something that can be prevented? If you have a big component tree, 
detaching twice can be quite expensive.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to