Dask typically can work with fully resolved host addresses (127.0.0.1:1234 ) or hostnames (localhost:1234) interchangeably by resolving the hostname where necessary.
We have various toggle over the code base controlling this behaviour
They are all accessing distributed.com.addressing.resolve_address which then dispatches the resolve to the used network backend based on the URL scheme.
We're not very consistent in this behaviour and I believe that if we want to resolve addresses, we should resolve all addresses as soon as the user passes them in.
Particularly, where we're not resolving addresses are
This can cause confusing and wrong behaviour whenever we're comparing addresses, e.g.
Side note: There is an ambiguous, not documented Scheduler.coerce_hostname which is not connected to address resolution but rather checks the internal list of aliases
- I would suggest to remove the kwargs in most of the functions and replace it with a config toggle, if we want to allow toggling.
- We should ensure that this behaviour is consistent, e.g. all addresses are always resolved or never
Dask typically can work with fully resolved host addresses (
127.0.0.1:1234) or hostnames (localhost:1234) interchangeably by resolving the hostname where necessary.We have various toggle over the code base controlling this behaviour
Scheduler.coerce_addressScheduler.heartbeat_workerScheduler.add_workerdistributed.worker.get_clientThey are all accessing
distributed.com.addressing.resolve_addresswhich then dispatches the resolve to the used network backend based on the URL scheme.We're not very consistent in this behaviour and I believe that if we want to resolve addresses, we should resolve all addresses as soon as the user passes them in.
Particularly, where we're not resolving addresses are
Client.__init__and hereNanny.__init__Worker.__init__This can cause confusing and wrong behaviour whenever we're comparing addresses, e.g.
distributed/distributed/actor.py
Lines 173 to 177 in e1e4385
Client._gatherClient._scatterQueuesVariablesWorker._get_client(This causes the failure in Ensure default client mechanism is threadsafe #5901 (comment))Side note: There is an ambiguous, not documented
Scheduler.coerce_hostnamewhich is not connected to address resolution but rather checks the internal list of aliases