You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/12/06 01:04:14 UTC

svn commit: r1643475 - in /tomcat/tc8.0.x/trunk: ./ java/org/apache/catalina/core/ test/org/apache/catalina/core/ webapps/docs/

Author: markt
Date: Sat Dec  6 00:04:14 2014
New Revision: 1643475

URL: http://svn.apache.org/r1643475
Log:
Revert r1643383 pending clarification from the Servlet EG re section 6.2.3 and threading requirements.
Disable associated test.

Modified:
    tomcat/tc8.0.x/trunk/   (props changed)
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_es.properties
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/StandardWrapperValve.java
    tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java
    tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc8.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Dec  6 00:04:14 2014
@@ -1 +1 @@
-/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642668,1642679,1642697,1642699,1643002,1643066,1643121,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371
+/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642668,1642679,1642697,1642699,1643002,1643066,1643121,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643474

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java Sat Dec  6 00:04:14 2014
@@ -757,6 +757,17 @@ final class ApplicationDispatcher implem
             runtimeException = e;
         }
 
+        // Release the filter chain (if any) for this request
+        try {
+            if (filterChain != null)
+                filterChain.release();
+        } catch (Throwable e) {
+            ExceptionUtils.handleThrowable(e);
+            wrapper.getLogger().error(sm.getString("standardWrapper.releaseFilters",
+                             wrapper.getName()), e);
+            // FIXME: Exception handling needs to be similar to what is in the StandardWrapperValue
+        }
+
         // Deallocate the allocated servlet instance
         try {
             if (servlet != null) {

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java Sat Dec  6 00:04:14 2014
@@ -530,6 +530,22 @@ final class ApplicationFilterChain imple
 
 
     /**
+     * Release references to the filters and wrapper executed by this chain.
+     */
+    void release() {
+
+        for (int i = 0; i < n; i++) {
+            filters[i] = null;
+        }
+        n = 0;
+        pos = 0;
+        servlet = null;
+        support = null;
+
+    }
+
+
+    /**
      * Prepare for reuse of the filters and wrapper executed by this chain.
      */
     void reuse() {

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties Sat Dec  6 00:04:14 2014
@@ -186,6 +186,7 @@ standardWrapper.notClass=No servlet clas
 standardWrapper.notContext=Parent container of a Wrapper must be a Context
 standardWrapper.notFound=Servlet {0} is not available
 standardWrapper.notServlet=Class {0} is not a Servlet
+standardWrapper.releaseFilters=Release filters exception for servlet {0}
 standardWrapper.serviceException=Servlet.service() for servlet [{0}] in context with path [{1}] threw exception
 standardWrapper.serviceExceptionRoot=Servlet.service() for servlet [{0}] in context with path [{1}] threw exception [{2}] with root cause
 standardWrapper.unavailable=Marking servlet {0} as unavailable

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_es.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_es.properties?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_es.properties (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_es.properties Sat Dec  6 00:04:14 2014
@@ -145,6 +145,7 @@ standardWrapper.notClass = No se ha espe
 standardWrapper.notContext = El contenedor padre para un Arropador (Wrapper) debe de ser un Contexto
 standardWrapper.notFound = No est\u00E1 disponible el Servlet {0}
 standardWrapper.notServlet = La Clase {0} no es un Servlet
+standardWrapper.releaseFilters = Excepci\u00F3n de Liberaci\u00F3n de filtros para servlet {0}
 standardWrapper.serviceException = Servlet.service() para servlet {0} lanz\u00F3 excepci\u00F3n
 standardWrapper.serviceExceptionRoot = El Servlet.service() para el servlet [{0}] en el contexto con ruta [{1}] lanz\u00F3 la excepci\u00F3n [{2}] con causa ra\u00EDz
 standardWrapper.unavailable = Marcando el servlet {0} como no disponible

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties Sat Dec  6 00:04:14 2014
@@ -81,6 +81,7 @@ standardWrapper.notClass=Aucune classe s
 standardWrapper.notContext=Le conteneur parent d''un enrobeur (wrapper) doit \u00eatre un contexte
 standardWrapper.notFound=Servlet {0} n''est pas disponible.
 standardWrapper.notServlet=La classe {0} n''est pas une servlet
+standardWrapper.releaseFilters=Exception des filtres de sortie (release filters) pour la servlet {0}
 standardWrapper.serviceException="Servlet.service()" pour la servlet {0} a g\u00e9n\u00e9r\u00e9 une exception
 standardWrapper.unavailable=La servlet {0} est marqu\u00e9 comme indisponible
 standardWrapper.unloadException=La servlet {0} a g\u00e9n\u00e9r\u00e9 une exception "unload()"

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties Sat Dec  6 00:04:14 2014
@@ -82,6 +82,7 @@ standardWrapper.notClass=\u30b5\u30fc\u3
 standardWrapper.notContext=\u30e9\u30c3\u30d1\u306e\u89aa\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
 standardWrapper.notFound=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u304c\u5229\u7528\u3067\u304d\u307e\u305b\u3093
 standardWrapper.notServlet=\u30af\u30e9\u30b9 {0} \u306f\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u3067\u306f\u3042\u308a\u307e\u305b\u3093
+standardWrapper.releaseFilters=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u306e\u30d5\u30a3\u30eb\u30bf\u4f8b\u5916\u3092\u89e3\u9664\u3057\u307e\u3059
 standardWrapper.serviceException=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u306eServlet.service()\u304c\u4f8b\u5916\u3092\u6295\u3052\u307e\u3057\u305f
 standardWrapper.unavailable=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u3092\u5229\u7528\u4e0d\u53ef\u80fd\u306b\u30de\u30fc\u30af\u3057\u307e\u3059
 standardWrapper.unloadException=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u304cunload()\u4f8b\u5916\u3092\u6295\u3052\u307e\u3057\u305f

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/StandardWrapperValve.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/StandardWrapperValve.java?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/StandardWrapperValve.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/StandardWrapperValve.java Sat Dec  6 00:04:14 2014
@@ -270,10 +270,15 @@ final class StandardWrapperValve
             exception(request, response, e);
         }
 
-        if (filterChain != null && request.isComet()) {
-            // If this is a Comet request, then the same chain will be used for the
-            // processing of all subsequent events.
-            filterChain.reuse();
+        // Release the filter chain (if any) for this request
+        if (filterChain != null) {
+            if (request.isComet()) {
+                // If this is a Comet request, then the same chain will be used for the
+                // processing of all subsequent events.
+                filterChain.reuse();
+            } else {
+                filterChain.release();
+            }
         }
 
         // Deallocate the allocated servlet instance

Modified: tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java (original)
+++ tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java Sat Dec  6 00:04:14 2014
@@ -26,6 +26,10 @@ import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
 import org.apache.catalina.Context;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
@@ -34,11 +38,9 @@ import org.apache.tomcat.util.buf.ByteCh
 import org.apache.tomcat.util.descriptor.web.FilterDef;
 import org.apache.tomcat.util.descriptor.web.FilterMap;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 public class TestApplicationFilterChain extends TomcatBaseTest {
 
+    @Ignore // Appears to contradict Servlet 6.2.3
     @Test
     public void testBug57284() throws Exception {
         Tomcat tomcat = getTomcatInstance();

Modified: tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml?rev=1643475&r1=1643474&r2=1643475&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Sat Dec  6 00:04:14 2014
@@ -109,10 +109,6 @@
         without error when running under a SecurityManager. (markt)
       </fix>
       <fix>
-        <bug>57284</bug>: Enable startAsync() to be called from a Filter and
-        still be able to call the remainder of the FilterChain. (markt)
-      </fix>
-      <fix>
         <bug>57308</bug>: Remove unnecessary calls to
         <code>System.getProperty()</code> where more suitable API calls are
         available. (markt)



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org