https://bz.apache.org/bugzilla/show_bug.cgi?id=69142

            Bug ID: 69142
           Summary: FileResourceSet allocates unnecessary Strings
           Product: Tomcat 9
           Version: 9.0.x
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: jeng...@amazon.com
  Target Milestone: -----

The method
'org.apache.catalina.webresources.FileResourceSet.getResource(String)' has
logic that in the common case (for us, anyway) appends a '/' to a String, then
immediately strips it back out.  The repeated concatenation means repeated
object allocation, and as this is a hot path, it impacts our startup time and
our request-handling time (we have unfortunate classpath scans during each
request).

In version 9.x, the append occurs at FileResourceSet.java#L83 and the character
is stripped at FileResourceSet.java#L87.  Rewriting that code to avoid the
duplication would be isolated, safe, and helpful.

A clunky example of that rewrite is:

if (path.charAt(path.length() - 1) != '/')
    if (webAppMount.startsWith(path)) {
        String name = path;
        name = name.substring(name.lastIndexOf('/') + 1);
        if (name.length() > 0) {
            return new VirtualResource(root, path, name);
        }
    } else {
        path = path + '/';
    }
else if (webAppMount.startsWith(path)) {
    String name = path.substring(0, path.length() - 1);
    name = name.substring(name.lastIndexOf('/') + 1);
    if (name.length() > 0) {
        return new VirtualResource(root, path, name);
    }
}
return new EmptyResource(root, path);

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to