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

--- Comment #5 from Luis Irwin <macusrashfor...@gmail.com> ---
Before fix (?) for bug 69333
(https://github.com/apache/tomcat/commit/4e16d8e30d2215ca9680edfa29feeaef5e26e91f#diff-bfcdd8b656071a9d6eb18bf8414b7daae9d5ab6243adaba16dbcefb808f0487f
https://geometry-dashworld.co/), JspRuntimeLibrary.releaseTag was called IFF
pooling was disabled (and also when pooling was enabled but TagHandlerPool
saturated to be precise). It was _not_ called when ${tagHandlerVar}._reused was
set to true but _was_ called when polling was disabled. Now it is the exact
opposite: it is called when polling is enabled and not called when it is
disabled. Something seems to be wrong.

According to
https://docs.oracle.com/javaee/7/api/javax/servlet/jsp/tagext/Tag.html:
"The page compiler guarantees that release() will be invoked on the Tag handler
before the handler is released to the GC."

Maybe this fix was supposed to produce something like

if (usePooling(n)) {
    // Print tag reuse
    out.printin(n.getTagHandlerPoolName());
    out.print(".reuse(");
    out.print(tagHandlerVar);
    out.println(");");
} else {
    // Clean-up
    out.printin("org.apache.jasper.runtime.JspRuntimeLibrary.releaseTag(");
    out.print(tagHandlerVar);
    out.println(", _jsp_getInstanceManager());");
}

instead of

if (usePooling(n)) {
    // Print tag reuse
    out.printin(n.getTagHandlerPoolName());
    out.print(".reuse(");
    out.print(tagHandlerVar);
    out.println(");");

    // Clean-up
    out.printin("org.apache.jasper.runtime.JspRuntimeLibrary.releaseTag(");
    out.print(tagHandlerVar);
    out.println(", _jsp_getInstanceManager());");
}

?

We've encountered this because some of the tags we use do setup some state in
constructor and clean that up in release(). Tag reuse is then obviously
impossible, as it's state is irreversibly broken.

Please let me know if I can help (including PR).

RESOLVED?

-- 
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