scudellari commented on a change in pull request #17227:
URL: https://github.com/apache/flink/pull/17227#discussion_r705676769



##########
File path: flink-core/src/main/java/org/apache/flink/util/NetUtils.java
##########
@@ -116,6 +119,39 @@ private static URL validateHostPortString(String hostPort) 
{
         }
     }
 
+    /**
+     * Calls {@link ServerSocket#accept()} on the provided server socket, 
suppressing any thrown
+     * {@link SocketTimeoutException}s. This is a workaround for the 
underlying JDK-8237858 bug in
+     * JDK 11 that can cause errant SocketTimeoutExceptions to be thrown at 
unexpected times.
+     *
+     * <p>This method expects the provided ServerSocket has no timeout set 
(SO_TIMEOUT of 0),
+     * indicating an infinite timeout. It will suppress all 
SocketTimeoutExceptions, even if a
+     * ServerSocket with a non-zero timeout is passed in.
+     *
+     * @param serverSocket a ServerSocket with {@link SocketOptions#SO_TIMEOUT 
SO_TIMEOUT} set to 0;
+     *     if SO_TIMEOUT is greater than 0, then this method will suppress 
SocketTimeoutException;

Review comment:
       We could. I started down this path, but I was not sure what the 
performance implications of calling `getSoTimeout` would be. The fact that it 
throws IOExceptions gave me pause. Given that there is only a single case where 
a socket is setting a timeout (in a test none the less) I felt it was safer to 
avoid the call altogether.
   
   Granted, this landscape could change over time and this certainly would be a 
confusing bug. (suppressing timeouts unexpectedly) I named the method in a way 
that I hoped it would minimize the chances of this sort of thing.
   
   I'm happy to go either way.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to