@@ -70,9 +70,11 @@ func NewDnsResolver(adsCache *AdsCache) (*dnsController, error) {
70
70
}
71
71
72
72
func (r * dnsController ) Run (stopCh <- chan struct {}) {
73
- // start dns resolver
73
+ // Start dns resolver
74
74
go r .dnsResolver .StartDnsResolver (stopCh )
75
+ // Handle cds updates when a hostname completes resolution
75
76
go r .refreshAdsWorker (stopCh )
77
+ // Consumption of clusters to be resolved.
76
78
go r .startDnsController ()
77
79
go func () {
78
80
<- stopCh
@@ -92,20 +94,23 @@ func (r *dnsController) resolveDomains(cds []*clusterv3.Cluster) {
92
94
// store all pending hostnames of clusters in r.hostInfo
93
95
for _ , cluster := range cds {
94
96
clusterName := cluster .GetName ()
95
- info := getHostInfo (cluster )
97
+ info := getHostName (cluster )
96
98
r .pendingClusterInfo [clusterName ] = info
97
99
}
98
100
99
101
// delete any scheduled re-resolve for domains we no longer care about
100
102
r .dnsResolver .RemoveUnwatchDomain (hostNames )
101
103
104
+ // Update clusters based on the data in the dns cache.
102
105
for k , v := range domains {
103
106
addresses := r .dnsResolver .GetDNSAddresses (k )
104
107
// Already have record in dns cache
105
108
if addresses != nil {
106
109
r .updateClusters (v , addresses )
107
110
go r .cache .ClusterCache .Flush ()
108
111
} else {
112
+ // Initialize the newly added hostname
113
+ // and add it to the dns queue to be resolved.
109
114
r .dnsResolver .InitializeDomainInCache (k )
110
115
domainInfo := & dns.DomainInfo {
111
116
Domain : v .DomainName ,
@@ -116,6 +121,7 @@ func (r *dnsController) resolveDomains(cds []*clusterv3.Cluster) {
116
121
}
117
122
}
118
123
124
+ // Handle cds updates when a hostname completes resolution
119
125
func (r * dnsController ) refreshAdsWorker (stop <- chan struct {}) {
120
126
for {
121
127
select {
@@ -223,7 +229,8 @@ func buildLbEndpoints(port uint32, addrs []string) []*endpointv3.LbEndpoint {
223
229
return lbEndpoints
224
230
}
225
231
226
- func getHostInfo (cluster * clusterv3.Cluster ) []string {
232
+ // Get the hostname to be resolved in Cluster
233
+ func getHostName (cluster * clusterv3.Cluster ) []string {
227
234
info := []string {}
228
235
for _ , e := range cluster .LoadAssignment .Endpoints {
229
236
for _ , le := range e .LbEndpoints {
0 commit comments