Skip to content

Commit

Permalink
[RPC] Prefer IPv4 between IPv4 and IPv6 (apache#7013)
Browse files Browse the repository at this point in the history
This change fix problem with version of IP protocol on MacOS.  Previous
the `rpc_tracker` and `query_rpc_tracker` were not able connect to each
other with default hostnames.

The root cause was in method `socket.getaddrinfo`. In `rpc_tracker` the
default hostname is "0.0.0.0" and `getaddrinfo` returns IPv4 type. In
`query_rpc_tracker` the default hastname is "localhost" and
`getaddrinfo` on MacOS returns IPv6 type. Note: on Linux both have IPv4
type.
These tools worked by different protocols and this is why
`query_rpc_tracker` wasn't able connect to `rpc_tracker`.

Now we will prefer IPv4 type. And both `rpc_tracker` and
`query_rpc_tracker` will use the same version of protocol.
  • Loading branch information
echuraev authored and trevor-m committed Dec 4, 2020
1 parent 08dd566 commit bb42f60
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions python/tvm/rpc/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ class TrackerCode(object):

def get_addr_family(addr):
res = socket.getaddrinfo(addr[0], addr[1], 0, 0, socket.IPPROTO_TCP)
for info in res:
if info[0] == socket.AF_INET:
return info[0]
return res[0][0]


Expand Down

0 comments on commit bb42f60

Please sign in to comment.