JDK-8245984 : Remove terminally deprecated Solaris-specific SO_FLOW_SLA socket option
  • Type: CSR
  • Component: core-libs
  • Sub-Component: java.net
  • Priority: P3
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 15
  • Submitted: 2020-05-27
  • Updated: 2020-06-03
  • Resolved: 2020-06-03
Related Reports
CSR :  
Relates :  
Description
Summary
-------

Remove `jdk.net.ExtendedSocketOptions.SO_FLOW_SLA`, `SocketFlow` and `SocketFlow.Status`. The Solaris and JDK-specific `SO_FLOW_SLA` socket option was terminally deprecated in JDK 14 (JDK-8235194) in preparation for the removal of the Solaris port. JEP 381 has already removed the implementation from JDK 15. The API elements (socket option and supporting classes) can now be removed. 


Problem
-------

The specification for `ExtendedSocketOptions.SO_FLOW_SLA` will need to be removed along with the option itself. 

The class level API documentation of `NetworkPermission` describes the permission targets required to get and set the `ExtendedSocketOptions.SO_FLOW_SLA` option. The description also currently marks these permission targets as being deprecated. The description of the permission targets will need to be removed from the class level API documentation of `NetworkPermission`. 

Solution
--------

Remove all related specification for `ExtendedSocketOptions.SO_FLOW_SLA`. 

Specification
-------------

Remove `jdk.net.ExtendedSocketOption.SO_FLOW_SLA`

Remove `jdk.net.SocketFlow`

Remove `jdk.net.SocketFlow.Status`

Remove the list of targets from `jdk.net.NetworkPermission`

         /**
          * Represents permission to access the extended networking capabilities
          * defined in the jdk.net package. These permissions contain a target
          * name, but no actions list. Callers either possess the permission or not.
    -     * <p>
    -     * The following targets are defined:
    -     *
    -     * <table class="striped"><caption style="display:none">permission target name,
    -     *  what the target allows,and associated risks</caption>
    -     * <thead>
    -     * <tr>
    -     *   <th scope="col">Permission Target Name</th>
    -     *   <th scope="col">What the Permission Allows</th>
    -     *   <th scope="col">Risks of Allowing this Permission</th>
    -     * </tr>
    -     * </thead>
    -     * <tbody>
    -     * <tr>
    -     *   <th scope="row">setOption.SO_FLOW_SLA</th>
    -     *   <td>set the {@link ExtendedSocketOptions#SO_FLOW_SLA SO_FLOW_SLA} option
    -     *       on any socket that supports it</td>
    -     *   <td>allows caller to set a higher priority or bandwidth allocation
    -     *       to sockets it creates, than they might otherwise be allowed.
    -     *       This permission is deprecated.</td>
    -     * </tr>
    -     * <tr>
    -     *   <th scope="row">getOption.SO_FLOW_SLA</th>
    -     *   <td>retrieve the {@link ExtendedSocketOptions#SO_FLOW_SLA SO_FLOW_SLA}
    -     *       setting from any socket that supports the option</td>
    -     *   <td>allows caller access to SLA information that it might not
    -     *       otherwise have. This permission is deprecated.</td>
    -     * </tr>
    -     * </tbody>
    -     * </table>
          *
          * @see jdk.net.ExtendedSocketOptions
          *
          * @since 1.8
          */
    
         public final class NetworkPermission extends BasicPermission {
Comments
Per guidance from Dr. Deprecator, moving the request to Approved; thanks.
03-06-2020

This is a bit of a surprise. The as-yet-unwritten policy is that removal shouldn't occur less than one year after deprecation-for-removal. But in my mind this is mainly a guideline, and it's certainly possible for exceptions to be made. In this case, the entire Solaris/SPARC port was deprecated in JDK 14 and removed in JDK 15. There seemed to be little to no discussion of this timeline. (However, there are probably sufficient reasons to have done that on a shorter-than-usual time frame, which included: significant maintenance costs, most stakeholders were Oracle-internal and so notification had previously been done, and it was holding up the C++ toolchain upgrade.) But this is all abstract discussion of policy. The facts on the ground are that Solaris/SPARC has already been removed from JDK 15, so any vestiges of Solaris/SPARC support, or any related features, are also fair game to be removed from JDK 15. Recommend approval.
03-06-2020

Moving to Provisional. [~smarks], as a deprecation policy matter, is it acceptable for this JDK-specific API to be removed in 15 after being terminally deprecated in JDK 14?
03-06-2020