Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8240827

Downport SSLSocketImpl.java from "8221882: Use fiber-friendly java.util.concurrent.locks in JSSE"

XMLWordPrintable

        Bring SSLSocketImpl parts of 8221882 to 11.0.8 to foster downporting of JDK-8219991

        "8209333: Socket reset issue for TLS 1.3 socket close" [1]
        should be downported for parity with 11.0.8-oracle.

        "8219991: New fix of the deadlock in
        sun.security.ssl.SSLSocketImpl" [3], is a follow-up that fixes an issue
        introduced by [1]. This should be brought to 11.0.8 along with [1].

        [1] applies clean to jdk11u-dev.
        Unfortunately, [3] does not apply at all.

        In jdk13 a major rework of JSSE was done:
        [2] "8221882: Use fiber-friendly java.util.concurrent.locks in JSSE"

        [2] removes the synchronized keywords from a lot of functions
        in JSSE and replaces them by manual locking. [3] exploits
        the new control flow within these reworked functions in
        SSLSocketImpl.java. It needs to be designed differently
        to apply directly on top of [1].

        Instead, I propose to downport the changes of [2] to the only
        file touched by [3], SSLSocketImpl.java. This is the purpose of this task.

        I took the patch of [2] for SSLSocketImpl.java and patched
        it on top of [1] to jdk11u-dev. It applies clean. On top
        of this, [3] applies clean, too.

        The SSLSocketImpl.java part of [2] uses a public lock
        introduced in OutputRecord. I revoked this part of the change
        as the changes to OutputRecord are not important here, so
        it'd like to skip them. Here the partial webrev of the
        revoked code:
        http://cr.openjdk.java.net/~goetz/wr20/8240827-Downport_SSLSocketImpl_from_8221882-jdk11/01-revoked/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java.udiff.html

        I'm not opening this issue as Backport for 8221882, as it only contains a subset of this change.

        The locks introduced by [2] in SSLSocketImpl.java are private,
        so there is no direct dependency to them in other code.

              goetz Goetz Lindenmaier
              goetz Goetz Lindenmaier
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: