@@ -23,6 +23,8 @@ import (
2323 "net/url"
2424 "sync"
2525
26+ "google.golang.org/grpc/internal/grpclog"
27+ "google.golang.org/grpc/internal/pretty"
2628 "google.golang.org/grpc/resolver"
2729 "google.golang.org/grpc/serviceconfig"
2830)
@@ -42,6 +44,7 @@ type dnsDiscoveryMechanism struct {
4244 target string
4345 topLevelResolver topLevelResolver
4446 dnsR resolver.Resolver
47+ logger * grpclog.PrefixLogger
4548
4649 mu sync.Mutex
4750 addrs []string
@@ -64,10 +67,11 @@ type dnsDiscoveryMechanism struct {
6467//
6568// The `dnsR` field is unset if we run into erros in this function. Therefore, a
6669// nil check is required wherever we access that field.
67- func newDNSResolver (target string , topLevelResolver topLevelResolver ) * dnsDiscoveryMechanism {
70+ func newDNSResolver (target string , topLevelResolver topLevelResolver , logger * grpclog. PrefixLogger ) * dnsDiscoveryMechanism {
6871 ret := & dnsDiscoveryMechanism {
6972 target : target ,
7073 topLevelResolver : topLevelResolver ,
74+ logger : logger ,
7175 }
7276 u , err := url .Parse ("dns:///" + target )
7377 if err != nil {
@@ -116,6 +120,10 @@ func (dr *dnsDiscoveryMechanism) stop() {
116120// updates from the real DNS resolver.
117121
118122func (dr * dnsDiscoveryMechanism ) UpdateState (state resolver.State ) error {
123+ if dr .logger .V (2 ) {
124+ dr .logger .Infof ("DNS discovery mechanism for resource %q reported an update: %s" , dr .target , pretty .ToJSON (state ))
125+ }
126+
119127 dr .mu .Lock ()
120128 addrs := make ([]string , len (state .Addresses ))
121129 for i , a := range state .Addresses {
@@ -130,6 +138,10 @@ func (dr *dnsDiscoveryMechanism) UpdateState(state resolver.State) error {
130138}
131139
132140func (dr * dnsDiscoveryMechanism ) ReportError (err error ) {
141+ if dr .logger .V (2 ) {
142+ dr .logger .Infof ("DNS discovery mechanism for resource %q reported error: %v" , dr .target , err )
143+ }
144+
133145 dr .topLevelResolver .onError (err )
134146}
135147
0 commit comments