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. testclient 3.zip
          25 kB
          Mushthaq Rumy
        2. testclient 2.zip
          25 kB
          Mushthaq Rumy
        3. HttpNIOTestServer.zip
          22 kB
          Mushthaq Rumy
        4. FixCPUSpike.png
          41 kB
          Mushthaq Rumy
        5. CPUHigh-ScreenRecording.mov
          9.80 MB
          Mushthaq Rumy

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: