Ensure async Callables are in sync with the call stack
After this change each call stack level pushes and pops an async
Callable to ensure the AsyncExecutionChain is in sync with the
call stack. Before this change, a controller returning a "forward:"
prefixed string caused the AsyncExecutionChain to contain a
extra Callables that did not match the actual call stack.
Issue: SPR-9611
@ -187,7 +187,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@@ -187,7 +187,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@ -204,21 +204,20 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@@ -204,21 +204,20 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
thrownewIllegalStateException("Deferred close is not supported with async requests.");
}
// deferred close mode
@ -303,7 +302,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@@ -303,7 +302,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@ -181,7 +181,7 @@ public class OpenSessionInViewInterceptor extends HibernateAccessor implements A
@@ -181,7 +181,7 @@ public class OpenSessionInViewInterceptor extends HibernateAccessor implements A
@ -119,7 +119,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@@ -119,7 +119,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@ -130,7 +130,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@@ -130,7 +130,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
logger.debug("Closing Hibernate Session in OpenSessionInViewFilter");
@ -198,7 +198,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@@ -198,7 +198,7 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@ -137,7 +137,7 @@ public class OpenSessionInViewInterceptor implements AsyncWebRequestInterceptor
@@ -137,7 +137,7 @@ public class OpenSessionInViewInterceptor implements AsyncWebRequestInterceptor
@ -39,7 +39,7 @@ public class StaleAsyncRequestCheckingCallable extends AbstractDelegatingCallabl
@@ -39,7 +39,7 @@ public class StaleAsyncRequestCheckingCallable extends AbstractDelegatingCallabl
}
publicObjectcall()throwsException{
Objectresult=getNextCallable().call();
Objectresult=getNext().call();
if(this.asyncWebRequest.isAsyncCompleted()){
thrownewStaleAsyncWebRequestException(
"Async request no longer available due to a timeout or a (client) error");
@ -76,8 +76,8 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements
@@ -76,8 +76,8 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements
"in async request processing. This is done in Java code using the Servlet API "+
"or by adding \"<async-supported>true</async-supported>\" to servlet and "+
@ -108,10 +108,6 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements
@@ -108,10 +108,6 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements
}
}
privatevoidassertNotStale(){
Assert.state(!isAsyncCompleted(),"Cannot use async request after completion");
@ -196,13 +196,13 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter
@@ -196,13 +196,13 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter
@ -296,7 +296,7 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter
@@ -296,7 +296,7 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter
@ -81,14 +81,14 @@ public class RequestContextFilter extends OncePerRequestFilter {
@@ -81,14 +81,14 @@ public class RequestContextFilter extends OncePerRequestFilter {
@ -121,7 +121,7 @@ public class RequestContextFilter extends OncePerRequestFilter {
@@ -121,7 +121,7 @@ public class RequestContextFilter extends OncePerRequestFilter {
@ -61,11 +61,11 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
@@ -61,11 +61,11 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
@ -80,7 +80,7 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
@@ -80,7 +80,7 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
@ -817,8 +817,6 @@ public class DispatcherServlet extends FrameworkServlet {
@@ -817,8 +817,6 @@ public class DispatcherServlet extends FrameworkServlet {
logger.debug("DispatcherServlet with name '"+getServletName()+"' processing "+request.getMethod()+
@ -853,13 +851,14 @@ public class DispatcherServlet extends FrameworkServlet {
@@ -853,13 +851,14 @@ public class DispatcherServlet extends FrameworkServlet {
// Restore the original attribute snapshot, in case of an include.
@ -881,7 +880,7 @@ public class DispatcherServlet extends FrameworkServlet {
@@ -881,7 +880,7 @@ public class DispatcherServlet extends FrameworkServlet {
logger.debug("Resuming asynchronous processing of "+request.getMethod()+
" request for ["+urlPathHelper.getRequestUri(request)+"]");
@ -904,7 +903,9 @@ public class DispatcherServlet extends FrameworkServlet {
@@ -904,7 +903,9 @@ public class DispatcherServlet extends FrameworkServlet {
@ -941,22 +942,23 @@ public class DispatcherServlet extends FrameworkServlet {
@@ -941,22 +942,23 @@ public class DispatcherServlet extends FrameworkServlet {
@ -971,7 +973,7 @@ public class DispatcherServlet extends FrameworkServlet {
@@ -971,7 +973,7 @@ public class DispatcherServlet extends FrameworkServlet {
// Clean up any resources used by a multipart request.
@ -1044,7 +1046,7 @@ public class DispatcherServlet extends FrameworkServlet {
@@ -1044,7 +1046,7 @@ public class DispatcherServlet extends FrameworkServlet {
@ -68,7 +68,7 @@ public class WebRequestHandlerInterceptorAdapter implements AsyncHandlerIntercep
@@ -68,7 +68,7 @@ public class WebRequestHandlerInterceptorAdapter implements AsyncHandlerIntercep
@ -59,8 +59,8 @@ public class AsyncMethodReturnValueHandler implements HandlerMethodReturnValueHa
@@ -59,8 +59,8 @@ public class AsyncMethodReturnValueHandler implements HandlerMethodReturnValueHa
@ -653,14 +653,17 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter i
@@ -653,14 +653,17 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter i
@ -758,7 +761,7 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter i
@@ -758,7 +761,7 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter i
@ -91,9 +91,6 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {
@@ -91,9 +91,6 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {
@ -111,15 +108,21 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {
@@ -111,15 +108,21 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {
@ -131,7 +134,7 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {
@@ -131,7 +134,7 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {