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

Alan Bateman Alan.Bateman at oracle.com
Sat Apr 14 07:09:35 UTC 2018


On 13/04/2018 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
>
> Currently Java supports SO_KEEPALIVE, whose default value is 7200 
> seconds which is too long for most of the applications. This code 
> change will allow us to set the keepalive 
> parameters(TCP_KEEPIDLE,TCP_KEEPCNT,TCP_KEEPINTVL)  which will 
> configure the idle time on per socket basis.
>
> I did code changes for Linux & Mac only, support for other platforms 
> can be added in future if needed.
Limiting this to specific platforms is okay but I think their 
descriptions will need a bit to work to ensure there is enough wriggle 
room to support varying behavior and also be somewhat consistent with 
the wording that we use for other options. There are several points that 
will need to expanded in the javadoc and maybe the style/wording in 
java.net.StandardSocketOption#SO_KEEPALIVE would help get that somewhat 
consistent -- e.g. initial value, can be set on unbound socket, can be 
changed after being set, etc.

One concern is that you've chosen to support it on ServerSocket and 
specify that it can be "inherited" by the sockets for accepted 
connections. This isn't tested in the proposed tests and I'm wondering 
if we would be saner to limit this to connected sockets.

Can you update SocketChannel/SocketOptionTests.java to ensure that 
SocketChannel is test? We also need to ensure that the new options don't 
show up in the supportedOptions returned by the channels that don't 
support these new options.

In passing:  The ordering of the modifiers in XXXSocketOptions looks a 
bit odd, can this be changed to the more usual "private static native".

-Alan


More information about the net-dev mailing list