Uploaded image for project: 'HttpComponents HttpCore'
  1. HttpComponents HttpCore
  2. HTTPCORE-687

High CPU usage noticed for requests with newline characters

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.4.14
    • 4.4.15
    • HttpCore, HttpCore NIO
    • None
    • Oracle JDK 1.8.0_211
      Oracle JDK 11.0.9

    Description

      We are using the 4.4.14 of HttpCore NIO. We are having an issue while sending a request to the server with additional newline characters where the CPU usage seems to increase and stays on forever. We debugged and found out that after the HTTPS response is written back to the client, the server tries to close the connection and the SSLIOSession. Furthermore, we found out that the condition [1] which gets executed in order to make the state as closed becomes false forever and hence it keeps on trying to close and results in the CPU spike.

      After further debugging we found out that the after a certain point the position is always less than the limit and the state is set to COMPLETED in the parse method of AbstractMessageParser.java [2], even though there are more lines to be read.

      In order to resolve this we did a small fix as shown in FixCPUSpike.png.

      We have attached a sample client and a server in order to reproduce the issue.

      Appreciate your help on this in resolving this issue.

       

      [1] - https://github.com/apache/httpcomponents-core/blob/rel/v4.4.14/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java#L389

      [2] - https://github.com/apache/httpcomponents-core/blob/rel/v4.4.14/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java#L186-L241

       

      Thanks,
      Mushthaq

       

      Attachments

        1. CPUHigh-ScreenRecording.mov
          9.80 MB
          Mushthaq Rumy
        2. FixCPUSpike.png
          41 kB
          Mushthaq Rumy
        3. testclient 2.zip
          25 kB
          Mushthaq Rumy
        4. HttpNIOTestServer.zip
          22 kB
          Mushthaq Rumy
        5. testclient 3.zip
          25 kB
          Mushthaq Rumy

        Issue Links

          Activity

            People

              Unassigned Unassigned
              mushthaq33 Mushthaq Rumy
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: