[ 
https://issues.apache.org/jira/browse/THRIFT-5453?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yuxuan Wang updated THRIFT-5453:
--------------------------------
    Fix Version/s: 0.15.0

> go: NewTSocketConf should not call net.ResolveTCPAddr
> -----------------------------------------------------
>
>                 Key: THRIFT-5453
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5453
>             Project: Thrift
>          Issue Type: Bug
>          Components: Go - Library
>    Affects Versions: 0.14.2
>            Reporter: Yuxuan Wang
>            Assignee: Yuxuan Wang
>            Priority: Major
>             Fix For: 0.15.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> Currently we call net.ResolveTCPAddr when creating a TSocket: 
> [https://github.com/apache/thrift/blob/f7e6c654bde5d9832bede2b48b460c3e1bbbbb92/lib/go/thrift/socket.go#L53]
> There are two issues with this approach:
>  # As the doc of [net.ResolveTCPAddr|https://pkg.go.dev/net#ResolveTCPAddr] 
> explicitly called out that "The address parameter can use a host name, but 
> this is not recommended, because it will return at most one of the host 
> name's IP addresses." (this is probably not a big issue as it's a connection, 
> not a connection pool)
>  # More importantly, when we use a host name here, net.ResolveTCPAddr will do 
> a DNS resolution and there's not any timeout attached to it (it's unbounded)
> We should preserve the hostname here, and rely on TSocket.Open 
> ([https://github.com/apache/thrift/blob/f7e6c654bde5d9832bede2b48b460c3e1bbbbb92/lib/go/thrift/socket.go#L164-L168])
>  to do the DNS resolution as we already have timeout attached there.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to