RFR 8145635 : Add TCP_QUICKACK socket option
vyom tewari
vyom.tewari at oracle.com
Thu Oct 12 09:01:42 UTC 2017
Hi Roger,
Thanks for the review, i incorporated all review comments from you
except("you can use ExtendedSocketOptions.TCP_QUICKACK to check for the
option to omit without
embedding the name."). ExtendedSocketOptions.java is part of
"jdk.net" so we can not directly use it in java.base, hence i used the
option name to filter "TCP_QUICKACK".
Please find the update
webrev(http://cr.openjdk.java.net/~vtewari/8145635/webrev0.4/index.html).
Thanks,
Vyom
On Wednesday 11 October 2017 08:46 PM, Roger Riggs wrote:
> Hi Vyom,
>
> Comments:
>
> - update copyright
> - use @since 18.3 instead of @since 10
>
> - ExtendedSocketOptions.java: 265,269 include the "TCP_QUICKACK" in
> the exception messages.
>
> Line 144: if you are going to keep the assert, add a explanation
> about how it could happen.
> I'd remove the assert.
>
> - The first sentence should be a complete sentence: "TCP_QUICKACK
> socket option enables sending TCP/IP acks immediately" or similar.
>
> - A reference to the appropriate TCP/IP spec for quickack would be a
> good addition. At least the RFC # and section.
> - 85: space after "." The phrasing is a bit odd in places in the
> javadoc.
> - line 81/82 the value is true to enable and false to disable.
> - This phrase is confusing: "it only enables a switch to or from
> TCP_QUICKACK mode";
> Since it is set on a socket, it should remain set on that socket
> until it is changed.
>
> - 203: be consistent in using enable/disable in parameters, etc even
> for private methods.
> "on" -> "enable"
>
> PlainDatagramSocketImpl: 89:
> Why create a new set with zero or one items just to throw it away?
> Use the iterator to add only the non-TCP_QUICKACK options to the
> supported options.
> Also, you can use ExtendedSocketOptions.TCP_QUICKACK to check for the
> option to omit without
> embedding the name.
>
>
> Sockets.java:
> - The initialization of isQuickAckAvailable might be cleaner as an
> nested static class
> that initializes the value in its static initializer. That would
> delay the init til needed
> and avoid extra flags.
>
> LinuxSocketOptions.java:
> - the native methods should be static; since the instance is unused.
>
> - line 41: the return type should be Boolean
>
> - line 46: the return type of getQuickAck0 should be Boolean like the
> argument to set.
>
> - line 34: using JNU_ThrowByNameWithLastError directly is
> sufficient; if the errno does not have a string unix supplies "unknown
> error nnn".
>
>
> Regards, Roger
>
> On 10/10/2017 2:58 PM, Chris Hegarty wrote:
>> Vyom,
>>
>> What about suggestion 1) below, the name of the socket option?
>>
>> -Chris.
>>
>>> On 27 Sep 2017, at 09:56, vyom tewari <vyom.tewari at oracle.com> wrote:
>>>
>>> Hi Chris,
>>>
>>> Thanks for review, please find the latest
>>> webrev(http://cr.openjdk.java.net/~vtewari/8145635/webrev0.2/index.html).
>>> I incorporated review comments from you and re-base the patch to our
>>> consolidated repo(jdk10/master).
>>>
>>> Thanks,
>>>
>>> Vyom
>>>
>>>
>>> On Monday 25 September 2017 01:57 AM, Chris Hegarty wrote:
>>>> Vyom,
>>>>
>>>>> On 11 Sep 2017, at 16:38, vyom tewari <vyom.tewari at oracle.com> wrote:
>>>>>
>>>>> Hi All,
>>>>>
>>>>> As jdk.net API already moved out of java.base, Please review the
>>>>> below code change for jdk10.
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8145635
>>>>> Webrev:
>>>>> http://cr.openjdk.java.net/~vtewari/8145635/webrev0.1/index.html
>>>>>
>>>> This looks quite good. Some comments:
>>>>
>>>> 1) I wonder if we should just call the option TCP_QUICKACK, rather
>>>> than SO_QUICKACK? Similar to TCP_NODELAY.
>>>>
>>>> 2) I think LinuxSocketOptions.h is largely unnecessary, if we do 1)
>>>> above.
>>>>
>>>> 3) Java_jdk_net_LinuxSocketOptions_getQuickAck could return jint,
>>>> rather than jobject, thus avoiding the need for createBoolean. The
>>>> conversation can happen in the Java layer. Can you please reduce
>>>> the lint length in this file, by wrapping similar to the style of
>>>> the Solaris version.
>>>>
>>>> 4) ExtendedSocketOptions.java
>>>> - drop the <p>, they are unnecessary.
>>>> - I think, similar to TCP_NODELAY, the spec should say that the
>>>> options is TCP specific. From TCP_NODELAY: "The socket option is
>>>> specific to stream-oriented sockets using the TCP/IP protocol.”
>>>> - "In TCP_QUICKACK mode”, maybe “When the option is enabled…”
>>>>
>>>> -Chris.
>>>>
>>>>
>
More information about the core-libs-dev
mailing list