[ 
https://issues.apache.org/jira/browse/HADOOP-18245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ritesh H Shukla updated HADOOP-18245:
-------------------------------------
    Description: 
Based on production workload, we found that it is not enough to map just 
SSLHandshakeException to ConnectException in Loadbalancing KMS Client but that 
needs to be extended to SSLExceptions and SocketExceptions.

Sample JDK code that can raise these exceptions: 
https://github.com/openjdk/jdk/blob/jdk-18%2B32/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java#L1409-L1428

Sample Exception backtrace: 
22/04/13 16:25:53 WARN kms.LoadBalancingKMSClientProvider: KMS provider at 
[https://bdgtr041x10h5.nam.nsroot.net:16001/kms/v1/] threw an IOException:
javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
        at sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1470)
        at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1298)
        at 
sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1199)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)
        at 
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:587)
        at 
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDe
Caused by: java.io.EOFException: SSL peer shut down incorrectly
        at 
sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:480)
        at 
sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:469)
        ... 59 more

  was:
Based on production workload, we found that it is not enough to map just 
SSLHandshakeException to ConnectException in Loadbalancing KMS Client but that 
needs to be extended to SSLExceptions and SocketExceptions.

Sample JDK code that can raise these exceptions.

     /**
     * Read the initial handshake records.
     */
    private int readHandshakeRecord() throws IOException {
        while (!conContext.isInboundClosed()) {
            try {
                Plaintext plainText = decode(null);
                if ((plainText.contentType == ContentType.HANDSHAKE.id) &&
                        conContext.isNegotiated) {
                    return 0;
                }
            } catch (SSLException |
                    InterruptedIOException | SocketException se) {
                // Don't change exception in case of timeouts or interrupts
                // or SocketException.
                throw se;
            } catch (IOException ioe) {
                throw new SSLException("readHandshakeRecord", ioe);
            }
        }

        return -1;
    }


> Extend KMS related exceptions that get mapped to ConnectException 
> ------------------------------------------------------------------
>
>                 Key: HADOOP-18245
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18245
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: kms
>            Reporter: Ritesh H Shukla
>            Priority: Major
>
> Based on production workload, we found that it is not enough to map just 
> SSLHandshakeException to ConnectException in Loadbalancing KMS Client but 
> that needs to be extended to SSLExceptions and SocketExceptions.
> Sample JDK code that can raise these exceptions: 
> https://github.com/openjdk/jdk/blob/jdk-18%2B32/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java#L1409-L1428
> Sample Exception backtrace: 
> 22/04/13 16:25:53 WARN kms.LoadBalancingKMSClientProvider: KMS provider at 
> [https://bdgtr041x10h5.nam.nsroot.net:16001/kms/v1/] threw an IOException:
> javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
>         at sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1470)
>         at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1298)
>         at 
> sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1199)
>         at 
> sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)
>         at 
> sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:587)
>         at 
> sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDe
> Caused by: java.io.EOFException: SSL peer shut down incorrectly
>         at 
> sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:480)
>         at 
> sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:469)
>         ... 59 more



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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

Reply via email to