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

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

Commit 2dcd9c06d99dd6075e1a4835fbdacbcc4956c805 in httpcomponents-core's branch 
refs/heads/HTTPCORE-644 from Oleg Kalnichevski
[ https://gitbox.apache.org/repos/asf?p=httpcomponents-core.git;h=2dcd9c0 ]

HTTPCORE-644: non-blocking TLSv1.3 connections can end up in an infinite event 
spin when closed concurrently by the local and the remote endpoints


> High CPU usage noticed for SSLIOSession.close() after JDK upgrade
> -----------------------------------------------------------------
>
>                 Key: HTTPCORE-644
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-644
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore, HttpCore NIO
>         Environment: Oracle JDK 1.8.0_261 (released in July 2020)
> AdoptOpenJDK (build 11.0.8+10)
> All versions after Oracle JDK 11.0.1
>            Reporter: Arunan Sugunakumar
>            Priority: Major
>             Fix For: 4.4.14, 5.0.3, 5.1-beta2
>
>         Attachments: HttpNIOTestServer.zip, Screenshot 2020-08-04 at 
> 08.48.18.png, Screenshot 2020-08-04 at 08.53.58.png, Screenshot 2020-08-04 at 
> 08.57.47.png, image-2020-08-03-13-02-35-195.png
>
>
> We are using a *forked version (4.3.3)* of HttpCore NIO. We recently had an 
> issue because of JDK upgrade. When a HTTPS connection is closed from the 
> server side, the server CPU usage seems to be increasing 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. Prior to JDK 8 261 versions (& Prior to Oracle JDK 11.0.2), 
> after SSLIOSession closes the outBound connection, the Handshake status is 
> returned as NEED_UNWRAP. When such status is returned, we set the new event 
> Mask as Read EventMask. In the new JDK versions it is returned as 
> NOT_HANDSHAKING. In such cases, the SSLSession is not getting closed 
> properly, and the server is constantly trying to close the connection with 
> Write events which causes the CPU spike. We debugged the JDK code, and we 
> were able to find a commit[1], which might have caused this behaviour. With 
> this JDK commit, TransportContext Handshake status is returned as 
> NOT_HANDSHAKING even after closeOutbound() is called. (The issue is 
> reproducible for both TLSv1.2 and TLSv1.3)
>  
> (Code snippet from JDK 11 commit)
> !image-2020-08-03-13-02-35-195.png!
>  
> *I am not sure, whether this issue is reproducible in the latest HttpCore 
> version*. But since this a JDK level change, it might affect all versions. We 
> observed the issue with the following JDK versions.
>  * Oracle JDK 1.8.0_261 (released in July 2020)
>  * AdoptOpenJDK (build 11.0.8+10)
>  * All versions after Oracle JDK 11.0.1
>  
> Any help here is appreciated.  
>  
> [1]- 
> [https://github.com/AdoptOpenJDK/openjdk-jdk11u/commit/8d1b63a4db2c6348a97b3cf45bd4d2caa7cad6b5]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to