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

            Bug ID: 64671
           Summary: HTTP/2 Stream.receivedData method throwing continuous
                    NullPointerException in the logs
           Product: Tomcat 9
           Version: 9.0.37
          Hardware: HP
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: raghavendra...@ericsson.com
  Target Milestone: -----

*Sub-Component - Coyote*

*OS : Redhat Linux*

*Description:*

*Setup:*

We have an implementation with Tomcat to transport http/2 packets between 2
systems (h2c connection). 

*Issue reproduction:*

With JMeter as simulation client, if we configure 200 threads (200 connections)
to connect towards Tomcat Server 9.0.37 (embedded in our system) and if we send
200 requests per second (each packet app. having 8 to 10 KB), we are getting
the following exceptions in Tomcat logs. 

    Exception in thread "http-nio-x.y.z.a-1234-exec-285"
java.lang.NullPointerException
        at org.apache.coyote.http2.Stream.receivedData(Stream.java:618)
        at
org.apache.coyote.http2.Http2UpgradeHandler.startRequestBodyFrame(Http2UpgradeHandler.java:1399)
        at
org.apache.coyote.http2.Http2AsyncUpgradeHandler.startRequestBodyFrame(Http2AsyncUpgradeHandler.java:39)
        at
org.apache.coyote.http2.Http2Parser.readDataFrame(Http2Parser.java:172)
        at
org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:245)
        at
org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:163)
        at
org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler.completed(SocketWrapperBase.java:1087)
        at
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$NioOperationState.run(NioEndpoint.java:1510)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)


*Background*

Currently we are using 9.0.22 in our production environment. While pumping
traffic with the above mentioned setup (with 9.0.22 tomcat version), we were
seeing memory leak with Coyote.RequestInfo Objects. 

When analyzing the heap, we understood that the connection id number that was
printed in the logs (Connection [22139]....) was almost matching the number of
HTTP11Processor objects held in the heap, even though the number of live
threads were less and the number of live connections too were less. 

So, suspecting a memory leak, we tried to simulate the same thing in the latest
9.x series tomcat version (9.0.37), in which we observed this exception
(NullPointerException) and we were not seeing the memory leak issue. 

*Resolution/Clarification requested*

* Can you explain the root cause for this exception and is there an impact due
to this NullPointerException? 
* Is there a known memory leak that is existing in 9.0.22 and is addressed in
the upcoming versions, which is why we are not seeing the memory leak issue in
9.0.37? Can you please confirm? 


Thanks in advance.

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