RFR:8194298 Add support for per Socket configuration of TCP keepalive

vyom tewari vyom.tewari at oracle.com
Wed Apr 18 15:01:29 UTC 2018


Hi Chris,


On Wednesday 18 April 2018 07:44 PM, Chris Hegarty wrote:
> Vyom,
>
> On 13/04/18 10:50, vyom tewari wrote:
>> Hi All,
>>
>> Please review the below code.
>>
>> BugId    : https://bugs.openjdk.java.net/browse/JDK-8194298
>>
>> webrev : 
>> http://cr.openjdk.java.net/~vtewari/8194298/webrev0.0/index.html
>
> Here is some proposed wording for the JDK-specific extended socket
> options specification.
>
> 1) Uses a consistent style across all three new options,
>    and is in line with existing extended options.
> 2) Renamed the options slightly, to improve readability
>    ( they don't need to conform to the native option names )
> 3) Reordered them so the build up is more logical
> 4) Removed inheritance from server sockets
> 5) Added standard verbiage about being "platform and
>    system dependent
> 6) Added typical values. I think this is useful, as it
>    gives an idea to the developer, but maybe it could be
>    misleading. Can be dropped if there are concerns.
>
> Can you please confirm that this is accurate, and also
> will leave enough "wriggle" room when additional platform
> support is added.
>
yes, below is perfect i will do the changes and send the updated webrev 
soon. Thanks for help, writing Java doc is always harder(4x) than 
writing code.
Vyom
> ---
>
>     /**
>      * Keep-Alive idle time.
>      *
>      * <p> When the {@link java.net.StandardSocketOptions#SO_KEEPALIVE
>      * SO_KEEPALIVE} option is enabled, TCP probes a connection that 
> has been
>      * idle for some amount of time. The default value for this idle 
> period is
>      * system dependent, but is typically 2 hours. The {@code 
> TCP_KEEPIDLE}
>      * option can be used to affect this value for a given socket.
>      *
>      * <p> The value of this socket option is an {@code Integer} that 
> is the
>      * number of seconds of idle time before keep-alive initiates a 
> probe. The
>      * socket option is specific to stream-oriented sockets using the 
> TCP/IP
>      * protocol. The exact semantics of this socket option are socket 
> type and
>      * system dependent.
>      *
>      *  @since 11
>      */
>     public static final SocketOption<Integer> TCP_KEEPIDLE
>             = new ExtSocketOption<Integer>("TCP_KEEPIDLE", 
> Integer.class);
>
>     /**
>      * Keep-Alive retransmission interval time.
>      *
>      * <p> When the {@link java.net.StandardSocketOptions#SO_KEEPALIVE
>      * SO_KEEPALIVE} option is enabled, TCP probes a connection that 
> has been
>      * idle for some amount of time. If the remote system does not 
> respond to a
>      * keep-alive probe, TCP retransmits the probe after some amount 
> of time.
>      * The default value for this retransmition interval is system 
> dependent,
>      * but is typically 75 seconds. The {@code TCP_KEEPINTERVAL} 
> option can be
>      * used to affect this value for a given socket.
>      *
>      * <p> The value of this socket option is an {@code Integer} that 
> is the
>      * number of seconds to wait before retransmitting a keep-alive 
> probe. The
>      * socket option is specific to stream-oriented sockets using the 
> TCP/IP
>      * protocol. The exact semantics of this socket option are socket 
> type and
>      * system dependent.
>      *
>      * @since 11
>      */
>     public static final SocketOption<Integer> TCP_KEEPINTERVAL
>             = new ExtSocketOption<Integer>("TCP_KEEPINTERVAL", 
> Integer.class);
>
>     /**
>      * Keep-Alive retransmission maximum limit.
>      *
>      * <p> When the {@link java.net.StandardSocketOptions#SO_KEEPALIVE
>      * SO_KEEPALIVE} option is enabled, TCP probes a connection that 
> has been
>      * idle for some amount of time. If the remote system does not 
> respond to a
>      * keep-alive probe, TCP retransmits the probe a certain number of 
> times
>      * before a connection is considered to be broken. The default 
> value for
>      * this keep-alive probe retransmit limit is system dependent, but is
>      * typically 8. The {@code TCP_KEEPCOUNT} option can be used to 
> affect
>      * this value for a given socket.
>      *
>      * <p> The value of this socket option is an {@code Integer} that 
> is the
>      * maximum number of keep-alive probes to be sent. The socket 
> option is
>      * specific to stream-oriented sockets using the TCP/IP protocol. 
> The exact
>      * semantics of this socket option are socket type and system 
> dependent.
>      *
>      * @since 11
>      */
>     public static final SocketOption<Integer> TCP_KEEPCOUNT
>             = new ExtSocketOption<Integer>("TCP_KEEPCOUNT", 
> Integer.class);
>
> -Chris.



More information about the net-dev mailing list