[ 
https://issues.apache.org/jira/browse/HTTPCORE-687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18094124#comment-18094124
 ] 

ASF subversion and git services commented on HTTPCORE-687:
----------------------------------------------------------

Commit 2d03d03bfb3a5d5deb82c96e2bc440fd91519b1d in httpcomponents-core's branch 
refs/heads/4.4.x from Oleg Kalnichevski
[ https://gitbox.apache.org/repos/asf?p=httpcomponents-core.git;h=2d03d03bf ]

HTTPCORE-687: non-blocking SSL I/O session can enter a tight loop if the SSL 
session gets closed by the protocol layer while there is still unprocessed data 
stuck in the protocol session buffer


> High CPU usage noticed for requests with newline characters
> -----------------------------------------------------------
>
>                 Key: HTTPCORE-687
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-687
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore, HttpCore NIO
>    Affects Versions: 4.4.14
>         Environment: Oracle JDK 1.8.0_211
> Oracle JDK 11.0.9
>            Reporter: Mushthaq Rumy
>            Priority: Major
>             Fix For: 4.4.15
>
>         Attachments: CPUHigh-ScreenRecording.mov, FixCPUSpike.png, 
> HttpNIOTestServer.zip, testclient 2.zip, testclient 3.zip
>
>
> 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
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to