On Mon, 16 Jun 2025 06:54:56 GMT, Jaikiran Pai <j...@openjdk.org> wrote:

> Can I please get a review of this change which proposes to enhance the 
> implementation of `ServerSocket` and `ServerSocketChannel` to allow for 
> `backlog` values to be greater than 200 on Windows? This addresses 
> https://bugs.openjdk.org/browse/JDK-8330940.
> 
> As noted in that enhancement request, right now on Windows, if the backlog is 
> specified to be more than 200, then Windows caps it to a platform internal 
> `SOMAXCONN`. As noted in the documentation here 
> https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-listen
>  applications can increase that limit by using the `SOMAXCONN_HINT` macro. 
> That macro then adjusts the value to be between 200 and 65535, thus allowing 
> for a higher backlog of connections.
> 
> The commit in this PR uses this macro when the specified backlog is 200 or 
> more. A new jtreg test has been introduced to verify this change. This test 
> and other existing tests in tier1, tier2 and tier3 continue to pass.
> 
> A similar restriction on the backlog value applies in Linux too 
> https://github.com/torvalds/linux/blob/master/Documentation/networking/ip-sysctl.rst#tcp-variables.
>  But from what I can see, unlike Windows, it cannot be adjusted when calling 
> `listen()`.

test/jdk/java/net/ServerSocket/LargeBacklogTest.java line 43:

> 41:  * @run junit LargeBacklogTest
> 42:  */
> 43: class LargeBacklogTest {

How reliable is this test? If it is reliable then we can add tests for 
SocketChannelChannel::socket and AsynchronousServerSocket too.

test/jdk/java/net/ServerSocket/LargeBacklogTest.java line 72:

> 70:     private static void testBackloggedConnects(final int backlog, final 
> int serverPort) {
> 71:         int numSuccessfulConnects = 0;
> 72:         System.out.println("attempting " + backlog + " connections to 
> port " + serverPort);

I don't know if this is a left over trace message or not. If intended then you 
might have to change it to use System.err so that it inlines with the test (at 
least I think JUnit uses System.err, TestNG uses System.out).

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/25819#discussion_r2149266221
PR Review Comment: https://git.openjdk.org/jdk/pull/25819#discussion_r2149267956

Reply via email to