Author: kkolinko Date: Sat Jan 21 10:41:41 2017 New Revision: 1779718 URL: http://svn.apache.org/viewvc?rev=1779718&view=rev Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=60596 Improve performance of DefaultServlet when sendfile feature is disabled on connector: - Reorder checks so that im-memory checks are done first and I/O ones are done later. - Remember calculated canonicalPath value.
Modified: tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java?rev=1779718&r1=1779717&r2=1779718&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java Sat Jan 21 10:41:41 2017 @@ -1873,14 +1873,16 @@ public class DefaultServlet extends Http HttpServletResponse response, WebResource resource, long length, Range range) { + String canonicalPath; if (sendfileSize > 0 - && resource.isFile() && length > sendfileSize - && (resource.getCanonicalPath() != null) && (Boolean.TRUE.equals(request.getAttribute(Globals.SENDFILE_SUPPORTED_ATTR))) && (request.getClass().getName().equals("org.apache.catalina.connector.RequestFacade")) - && (response.getClass().getName().equals("org.apache.catalina.connector.ResponseFacade"))) { - request.setAttribute(Globals.SENDFILE_FILENAME_ATTR, resource.getCanonicalPath()); + && (response.getClass().getName().equals("org.apache.catalina.connector.ResponseFacade")) + && resource.isFile() + && ((canonicalPath = resource.getCanonicalPath()) != null) + ) { + request.setAttribute(Globals.SENDFILE_FILENAME_ATTR, canonicalPath); if (range == null) { request.setAttribute(Globals.SENDFILE_FILE_START_ATTR, Long.valueOf(0L)); request.setAttribute(Globals.SENDFILE_FILE_END_ATTR, Long.valueOf(length)); Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1779718&r1=1779717&r2=1779718&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Sat Jan 21 10:41:41 2017 @@ -45,6 +45,14 @@ issues do not "pop up" wrt. others). --> <section name="Tomcat 9.0.0.M18 (markt)" rtext="in development"> + <subsection name="Catalina"> + <changelog> + <update> + <bug>60596</bug>: Improve performance of DefaultServlet when sendfile + feature is disabled on connector. (kkolinko) + </update> + </changelog> + </subsection> <subsection name="Coyote"> <changelog> <fix> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org