https://bz.apache.org/bugzilla/show_bug.cgi?id=58646
Bug ID: 58646
Summary: NullPointerException in InternalNioOutputBuffer under
traffic related to <async-supported> config.
Product: Tomcat 8
Version: 8.0.28
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Catalina
Assignee: [email protected]
Reporter: [email protected]
We're using Tomcat in our product. Under traffic we can reproduce the following
exceptions:
Nov 23, 2015 CST 08:34:58.115 PM org.apache.coyote.http11.Http11NioProcessor
INFO: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at
DEBUG level.
Nov 23, 2015 CST 08:34:58.118 PM org.apache.coyote.http11.Http11NioProcessor
SEVERE: Error finishing response
java.lang.NullPointerException
at
org.apache.coyote.http11.InternalNioOutputBuffer.flushBuffer(InternalNioOutputBuffer.java:234)
at
org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer.java:189)
at
org.apache.coyote.http11.InternalNioOutputBuffer.commit(InternalNioOutputBuffer.java:177)
at
org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:741)
at org.apache.coyote.Response.action(Response.java:177)
at
org.apache.coyote.http11.AbstractOutputBuffer.endRequest(AbstractOutputBuffer.java:369)
at
org.apache.coyote.http11.AbstractHttp11Processor.endRequest(AbstractHttp11Processor.java:1804)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1143)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
We have several applications deployed on our Tomcat. Most of the applications
are simple Jersey Rest service applications. Above NullPointer is related to
one of them (basically, the one which is called during traffic - I bet other
apps will have the same issue if they would be called). Also we have one
application which is using WebSockets (Tomcat implementation) and Async support
for Comet. WebSocket interface is used during traffic testing while Comet is
NOT (Servlets are not called). We have the following in our Tomcat main web.xml
file (comparing to the default one):
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>com.avaya.acc.base.web.filters.CorsFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>NoCachingFilter</filter-name>
<filter-class>com.avaya.acc.base.web.filters.NoCachingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>Set-Expires</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>No-Store</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NoCachingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- enable caching for static content -->
<context-param>
<param-name>NoCachingFilter enableCaching</param-name>
<param-value>Set-Expires=true;No-Store=false;patterns=*.js,*.swf,*.jar,*.png,*.jpg,*.css</param-value>
</context-param>
<!-- Declaring this param in web.xml for specific webapp doesn't work, so
leaving it here -->
<context-param>
<param-name>stinger.excluded.url.patterns</param-name>
<param-value>/Comet/StartLiveSession,/Comet/Data,/Comet/EndLiveSession</param-value>
</context-param>
And the following in the web.xml for application which has issues:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Live Viewer</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.avaya.acc.wcs.api.viewer.rest.app.LiveViewerRestApp</param-value>
</init-param>
<init-param>
<!-- integrates JERSEY and JACKSON -->
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>sendfileSize</param-name>
<param-value>-1</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Live Viewer</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
I tried to remove async-supported from all our web.xml files and the issue is
gone. So it's definitely related to <async-supported> configuration - without
even actually using async functionality. We still need async-supported for our
Comet interface so just disabling async is not an option for us.
I can turn on some additional logging and reproduce again if this will help -
just let me know which logging is needed.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]