Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Done
-
None
-
None
-
None
Description
Some of Flink's network services use the NetUtils.getAvailablePort() to predetermine an available port for a service which is later started. This can lead to a race condition where two services have predetermined the same available port and later fail to instantiate because for one of them the port is already in use.
This is, for example, the case for the NettyConnectionManager which is started after the TaskManager has registered at the JobManager. It would be better if we first start the network services with a random port, e.g. the NettyConnectionManager, and then send the bound port to the client. This will avoid problems like that.