RFR:8194298 Add support for per Socket configuration of TCP keepalive
vyom tewari
vyom.tewari at oracle.com
Thu Apr 26 10:30:45 UTC 2018
On Thursday 26 April 2018 03:48 PM, Langer, Christoph wrote:
> Hi Vyom,
>
> what about my suggestions for renaming?
>
> src/jdk.net/macosx/classes/jdk/net/UnixSocketOptions.java -> src/jdk.net/macosx/classes/jdk/net/MacOSXSocketOptions.java
> src/jdk.net/macosx/native/libextnet/UnixSocketOptions.c -> src/jdk.net/macosx/native/libextnet/MacOSXSocketOptions.c
till now we don't have file name like MacOSX***** so i choose to leave
as it is but if people think "MacOSXSocketOption" is more appropriate, i
will change the filename name in my next webrev.
Thanks,
Vyom
>
> This would be more consistent as we have:
> src/jdk.net/linux/native/libextnet/LinuxSocketOptions.c
> src/jdk.net/linux/classes/jdk/net/LinuxSocketOptions.java
> ...
> src/jdk.net/solaris/native/libextnet/SolarisSocketOptions.c
> src/jdk.net/solaris/classes/jdk/net/SolarisSocketOptions.java
>
> Thanks
> Christoph
>
>> -----Original Message-----
>> From: net-dev [mailto:net-dev-bounces at openjdk.java.net] On Behalf Of
>> vyom tewari
>> Sent: Montag, 23. April 2018 14:06
>> To: Chris Hegarty <chris.hegarty at oracle.com>; OpenJDK Network Dev list
>> <net-dev at openjdk.java.net>
>> Subject: Re: RFR:8194298 Add support for per Socket configuration of TCP
>> keepalive
>>
>> Hi,
>>
>> Please find the latest
>> webrev(http://cr.openjdk.java.net/~vtewari/8194298/webrev0.1/index.htm
>> l).
>> I incorporated most of the review comments.
>>
>> Thanks,
>>
>> Vyom
>>
>>
>> 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.
>>>
>>> ---
>>>
>>> /**
>>> * 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