diff --git a/CHANGELOG/CHANGELOG-3.6.md b/CHANGELOG/CHANGELOG-3.6.md index 77383eecc9b..2fea041b002 100644 --- a/CHANGELOG/CHANGELOG-3.6.md +++ b/CHANGELOG/CHANGELOG-3.6.md @@ -16,6 +16,7 @@ See [code changes](https://github.com/etcd-io/etcd/compare/v3.5.0...v3.6.0). - Add command to generate [shell completion](https://github.com/etcd-io/etcd/pull/13133). - When print endpoint status, [show db size in use](https://github.com/etcd-io/etcd/pull/13639) +- Trim the suffix dot from the target in SRV records returned by DNS lookup, see [code change](https://github.com/etcd-io/etcd/pull/13712). ### etcdutl v3 diff --git a/client/pkg/srv/srv.go b/client/pkg/srv/srv.go index 948c6834909..21c377e352b 100644 --- a/client/pkg/srv/srv.go +++ b/client/pkg/srv/srv.go @@ -106,9 +106,10 @@ func GetClient(service, domain string, serviceName string) (*SRVClients, error) return err } for _, srv := range addrs { + shortHost := strings.TrimSuffix(srv.Target, ".") urls = append(urls, &url.URL{ Scheme: scheme, - Host: net.JoinHostPort(srv.Target, fmt.Sprintf("%d", srv.Port)), + Host: net.JoinHostPort(shortHost, fmt.Sprintf("%d", srv.Port)), }) } srvs = append(srvs, addrs...) diff --git a/client/pkg/srv/srv_test.go b/client/pkg/srv/srv_test.go index c2ccf9485d9..39c09eca594 100644 --- a/client/pkg/srv/srv_test.go +++ b/client/pkg/srv/srv_test.go @@ -226,9 +226,9 @@ func TestSRVDiscover(t *testing.T) { }, { []*net.SRV{ - {Target: "a.example.com", Port: 2480}, - {Target: "b.example.com", Port: 2480}, - {Target: "c.example.com", Port: 2480}, + {Target: "a.example.com.", Port: 2480}, + {Target: "b.example.com.", Port: 2480}, + {Target: "c.example.com.", Port: 2480}, }, []*net.SRV{}, []string{"https://a.example.com:2480", "https://b.example.com:2480", "https://c.example.com:2480"},