+1 if you call the method onAfterTargetsDetached()

is there a reason why this is needed in addition to IDetachListener for 1.4?

-igor

On Thu, Aug 13, 2009 at 6:46 AM, Martijn
Dashorst<[email protected]> wrote:
> The following patch was crafted to enable checks for detach logic
> *after* the request cycle has detached all request targets that were
> part of the request. This is useful for those checks we perform in our
> applications, and that I've presented in London and at the Wicket
> meetup 2009. [1]
>
> The problem is that when RequestCycle#onEndRequest is called, the
> session lock has been removed, causing rather frequent race conditions
> in our (expensive) checks. The proposed patch adds an additional hook
> after the request targets have been detached, and further detaching of
> the request ensues. See also WICKET-2020 [2]
>
> Since 1.3.x is no longer officially supported, I'd like to propose
> that I add this to 1.3.x and release 1.3.8 at a given moment (when we
> incorporate additional bug fixes into the 1.3.x stream).
>
> I am aware that we don't backport everything anymore, but I do see
> that at least 1.3.8 will be released (we can't fix every bug, but
> there are of course things that should be fixed).
>
> Any objections to including this patch in 1.3.x?
>
> Any objections to including this patch in 1.4.x?
>
> Martijn
>
> [1] 
> http://www.slideshare.net/dashorst/keep-your-wicket-application-in-production
> [2] http://issues.apache.org/jira/browse/WICKET-2020
>
> Index: src/main/java/org/apache/wicket/RequestCycle.java
> ===================================================================
> --- src/main/java/org/apache/wicket/RequestCycle.java   (revision 803876)
> +++ src/main/java/org/apache/wicket/RequestCycle.java   (working copy)
> @@ -1124,6 +1124,15 @@
>                        }
>                }
>
> +               try
> +               {
> +                       onAfterDetach();
> +               }
> +               catch (Throwable re)
> +               {
> +                       log.error("there was an error processing 
> onAfterDetach", re);
> +               }
> +
>                if (automaticallyClearFeedbackMessages)
>                {
>                        // remove any rendered and otherwise obsolete feedback 
> messages from
> @@ -1520,6 +1529,13 @@
>        }
>
>        /**
> +        * Called when the request cycle object has detached all request 
> targets.
> +        */
> +       protected void onAfterDetach()
> +       {
> +       }
> +
> +       /**
>         * Called when the request cycle object has finished its response
>         */
>        protected void onEndRequest()
>

Reply via email to