Martijn Visser created FLINK-39794:
--------------------------------------

             Summary: StreamNetworkBenchmarkEnvironment uses 
InetAddress.getLocalHost(), causing SSL hostname-verification failures on cloud 
CI runners
                 Key: FLINK-39794
                 URL: https://issues.apache.org/jira/browse/FLINK-39794
             Project: Flink
          Issue Type: Bug
          Components: Test Infrastructure, Tests
            Reporter: Martijn Visser


flink-runtime/src/test/java/.../StreamNetworkBenchmarkEnvironment.java 
initialises its bind address as:

{code:java}
  private static final InetAddress LOCAL_ADDRESS;
  static {
      try {
          LOCAL_ADDRESS = InetAddress.getLocalHost();
      } catch (UnknownHostException e) {
          throw new Error(e);
      }
  }
{code}

This address is passed straight into NettyConfig{ and used as the server bind 
address by every benchmark that extends StreamNetworkBenchmarkEnvironment, 
including the SSL/OpenSSL variants of StreamNetworkThroughputBenchmark and 
StreamNetworkBroadcastThroughputBenchmark.

On any host where InetAddress.getLocalHost() resolves the local hostname to a 
non-loopback IP whose reverse DNS does not match the test certificate 
(flink-runtime/src/test/resources/local127.keystore, SANs: localhost, 
127.0.0.1, ::1), the SSL handshake in NettyClient.connect() fails with 
SSLHandshakeException: No subject alternative DNS name matching <fqdn> found. 

This is what caused FLINK-39787

Proposed fix: the benchmark has no need for an externally-routable address - it 
always connects to itself within the same JVM. Replace getLocalHost() with 
getLoopbackAddress():



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to