diff options
author | Yuxuan 'fishy' Wang <yuxuan.wang@reddit.com> | 2021-08-09 14:27:48 -0700 |
---|---|---|
committer | Yuxuan 'fishy' Wang <fishywang@gmail.com> | 2021-08-11 11:08:49 -0700 |
commit | fb539ae41297c369439bea6edf39186f92f408dc (patch) | |
tree | 83abd3dfce84e463439d605438976d9115daadb1 /lib | |
parent | 82a9c67405602ff053146a8df6bd566d90a9bf03 (diff) | |
download | thrift-fb539ae41297c369439bea6edf39186f92f408dc.tar.gz |
THRIFT-5453: Defer DNS from NewTSocketConf to TSocket.Open
Client: go
We used to do DNS lookups in NewTSocketConf, without any timeout checks.
Stop doing that and do DNS lookups in TSocket.Open instead, which
already checks for ConnectTimeout set in TConfiguration.
Also remove the error return from NewTSocketConf.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/go/thrift/configuration.go | 2 | ||||
-rw-r--r-- | lib/go/thrift/socket.go | 27 |
2 files changed, 18 insertions, 11 deletions
diff --git a/lib/go/thrift/configuration.go b/lib/go/thrift/configuration.go index 454d9f377..de27edd67 100644 --- a/lib/go/thrift/configuration.go +++ b/lib/go/thrift/configuration.go @@ -56,7 +56,7 @@ const ( // // For example, say you want to migrate this old code into using TConfiguration: // -// sccket := thrift.NewTSocketTimeout("host:port", time.Second) +// sccket, err := thrift.NewTSocketTimeout("host:port", time.Second, time.Second) // transFactory := thrift.NewTFramedTransportFactoryMaxLength( // thrift.NewTTransportFactory(), // 1024 * 1024 * 256, diff --git a/lib/go/thrift/socket.go b/lib/go/thrift/socket.go index 0cf59a0f5..eeac4f1a4 100644 --- a/lib/go/thrift/socket.go +++ b/lib/go/thrift/socket.go @@ -29,16 +29,26 @@ type TSocket struct { conn *socketConn addr net.Addr cfg *TConfiguration +} + +// tcpAddr is a naive implementation of net.Addr that does nothing extra. +type tcpAddr string + +var _ net.Addr = tcpAddr("") + +func (ta tcpAddr) Network() string { + return "tcp" +} - connectTimeout time.Duration - socketTimeout time.Duration +func (ta tcpAddr) String() string { + return string(ta) } // Deprecated: Use NewTSocketConf instead. func NewTSocket(hostPort string) (*TSocket, error) { return NewTSocketConf(hostPort, &TConfiguration{ noPropagation: true, - }) + }), nil } // NewTSocketConf creates a net.Conn-backed TTransport, given a host and port. @@ -49,12 +59,8 @@ func NewTSocket(hostPort string) (*TSocket, error) { // ConnectTimeout: time.Second, // Use 0 for no timeout // SocketTimeout: time.Second, // Use 0 for no timeout // }) -func NewTSocketConf(hostPort string, conf *TConfiguration) (*TSocket, error) { - addr, err := net.ResolveTCPAddr("tcp", hostPort) - if err != nil { - return nil, err - } - return NewTSocketFromAddrConf(addr, conf), nil +func NewTSocketConf(hostPort string, conf *TConfiguration) *TSocket { + return NewTSocketFromAddrConf(tcpAddr(hostPort), conf) } // Deprecated: Use NewTSocketConf instead. @@ -64,7 +70,7 @@ func NewTSocketTimeout(hostPort string, connTimeout time.Duration, soTimeout tim SocketTimeout: soTimeout, noPropagation: true, - }) + }), nil } // NewTSocketFromAddrConf creates a TSocket from a net.Addr @@ -172,6 +178,7 @@ func (p *TSocket) Open() error { msg: err.Error(), } } + p.addr = p.conn.RemoteAddr() return nil } |