RFR:8194298 Add support for per Socket configuration of TCP keepalive
Ivan Gerasimov
ivan.gerasimov at oracle.com
Thu May 10 20:28:47 UTC 2018
Hi Vyom!
A few random comments:
1)
src/java.base/share/classes/sun/net/ext/ExtendedSocketOptions.java
Collections.emptySet() produces an immutable set, so it must not be
possible to add elements to it.
Is there a test that verifies that ExtendedSocketOption.options(short)
works as expected?
2)
In several files:
Personally, I found it counter-intuitive that static
ExtendedSocketOptions.getInstance() is imported and used without the
class name.
It is hard to realize from the context to which class the getInstance()
call belongs to.
3)
src/jdk.net/linux/native/libextnet/LinuxSocketOptions.c
Formatting nits: Please add a space after comma at line 125, add an
empty line after 128.
4)
src/jdk.net/share/classes/jdk/net/ExtendedSocketOptions.java
Please fix formatting at lines 355-358 (spaces, else after })
Can the new set/get methods at 305-325 be declared private?
5)
src/jdk.net/share/classes/jdk/net/Sockets.java
It is probably a matter of preference, but it might be slightly more
efficient to call set.add() three times instead of calling
set.addAll(Set.of(...)).
Similarly, it may be a little bit faster to do (set.contains(A) &&
set.contains(B) && set.contains(C)) instead of set.containsAll(Set.of(A,
B, C)).
6)
test/jdk/java/nio/channels/AsynchronousServerSocketChannel/Basic.java
indentation is broken at lines 176-183
7)
test/jdk/java/nio/channels/AsynchronousSocketChannel/Basic.java
Extra space in the indentation at 192 :)
8)
test/jdk/java/nio/channels/SocketChannel/SocketOptionTests.java
Would it make sense to add a test that either all three options
{TCP_KEEPCOUNT, TCP_KEEPIDLE, TCP_KEEPINTERVAL} are supported or none of
them?
With kind regards,
Ivan
On 5/10/18 8:21 AM, vyom tewari wrote:
> Hi,
>
> Please find the latest
> webrev(http://cr.openjdk.java.net/~vtewari/8194298/webrev0.2/index.html).
> I incorporated most of the review comments. Chris as you suggested in
> below mail i did not added the note for upper-bound because values are
> also OS specific.
>
> Thanks,
>
> Vyom
>
>
> On Monday 23 April 2018 07:26 PM, Chris Hegarty wrote:
>>
>> On 23/04/18 13:34, Alan Bateman wrote:
>>> On 23/04/2018 13:05, vyom tewari wrote:
>>>> Hi,
>>>>
>>>> Please find the latest
>>>> webrev(http://cr.openjdk.java.net/~vtewari/8194298/webrev0.1/index.html).
>>>> I incorporated most of the review comments.
>>> This looks much better but I think the second paragraph of the spec
>>> of each option needs to be inverted so that it states clearly what
>>> the options does before it gets into the background of SO_KEEPALIVE.
>>> For example, TCP_KEEPALIVE should say that it sets the idle period
>>> for keep alive before it explains SO_KEEPALIVE.
>>
>> Mea culpa, I ordered the paragraphs as they are to be consistent
>> with TCP_QUICKACK. I don't have any objection if they are reversed.
>>
>>> The currently wording also begs questions as to whether the socket
>>> option means anything when SO_KEEPALIVE is not enabled.
>>
>> It's implicit. The option can still be set and its value retrieved.
>>
>>
>>> Also it probably should say something about whether it can be
>>> changed at any time or not.
>>
>> You can set it any time. Of course, it may not be effective
>> immediately, depending on the exact state of the socket.
>>
>> We may also want to add a note that the accepted values may
>> have an upper-bound. For example, the following is the largest
>> set of values that I can set on my Ubuntu Linux, without an
>> exception being thrown [*].
>>
>> TCP_KEEPIDLE = 32767
>> TCP_KEEPINTERVAL = 32767
>> TCP_KEEPCOUNT = 127
>>
>> -Chris.
>>
>> [*] "java.net.SocketException: Invalid argument" when a given
>> value is "too" large.
>
>
--
With kind regards,
Ivan Gerasimov
More information about the net-dev
mailing list