summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYuxuan 'fishy' Wang <yuxuan.wang@reddit.com>2021-08-09 14:27:48 -0700
committerYuxuan 'fishy' Wang <fishywang@gmail.com>2021-08-11 11:08:49 -0700
commitfb539ae41297c369439bea6edf39186f92f408dc (patch)
tree83abd3dfce84e463439d605438976d9115daadb1 /lib
parent82a9c67405602ff053146a8df6bd566d90a9bf03 (diff)
downloadthrift-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.go2
-rw-r--r--lib/go/thrift/socket.go27
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
}