eclipse-ee4j / eclipse-ee4j/wasp
System.err is wrapped as SystemLogHandler multiple times
- Dominant language
- Java
- Stars
- 8
- Forks
- 11
- PR merge metrics
- No merged PRs in 30d
Description
Whenever a new JspRuntimeContext is created, it (re)wraps System.err as a SystemLogHandler (see JspRuntimeContext line 165). This can lead to a long chain and inefficient System.err output. Here's a fragment of an example thread dump:
"Thread-7542" prio=6 tid=0x0000000006df8000 nid=0xc98 waiting for monitor entry
[0x00000000144fe000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.io.PrintStream.write(Unknown Source)
* waiting to lock <0x00000000aab5e508> (a java.io.PrintStream)
at java.io.PrintStream.print(Unknown Source)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at org.apache.jasper.util.SystemLogHandler.print(SystemLogHandler.java:214)
at java.lang.ThreadGroup.uncaughtException(Unknown Source)
at java.lang.ThreadGroup.uncaughtException(Unknown Source)
at java.lang.Thread.dispatchUncaughtException(Unknown Source)
It seems that JspRuntimeContexts are created in the JspServlet.init method. In a server with a number of different web applications deployed, there will be 1 JspServlet per webapp, and thus multiple wrapping occuring.
Contributor guide
Assessment
This issue has not been assessed yet.