This patch fixes a race between the selector thread and the IdleTimeoutTask 
which closes connections that were idle for longer than IDLE_INTERVAL. With 
this patch, only the thread that successfully removes the connection from 
idleConnections is permitted to change it. If any data arrives after the 
IdleTimeoutTask removes the connection from idleConnections, the data is 
ignored.

Additionally, this patch reduces the time interval between when the 
IdleTimeoutTask removes the connection from idleConnections and when the 
connection is closed, back to pre-JDK-8286918 level.

No new test; with platform sockets it's next to impossible to reliably get the 
timing right. Existing tier1-3 tests pass.

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

Commit messages:
 - Check if connection is still idle before closing
 - Do not handle incoming requests on connections are being closing

Changes: https://git.openjdk.org/jdk/pull/16366/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=16366&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8299058
  Stats: 35 lines in 1 file changed: 8 ins; 13 del; 14 mod
  Patch: https://git.openjdk.org/jdk/pull/16366.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16366/head:pull/16366

PR: https://git.openjdk.org/jdk/pull/16366

Reply via email to