mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 17:46:57 +02:00
Specify and clarify root cause of issue 4241
This commit is contained in:
parent
ba56b7abb3
commit
d9b743922a
@ -210,9 +210,12 @@ func (c *Controller) RunOnce(ctx context.Context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
//records = endpoint.RemoveDuplicates(records)
|
records = endpoint.RemoveDuplicates(records)
|
||||||
//This deduplication could be a different but valid solution
|
//This deduplication seems to be the a good fit
|
||||||
|
//Duplicated endpoints were living on this variable
|
||||||
|
//In all versions for the overlapping zones
|
||||||
//With this in place the change on plan.go is not needed
|
//With this in place the change on plan.go is not needed
|
||||||
|
//Also it saves some rounds of cpu
|
||||||
//Keeping this here until we decide what's best
|
//Keeping this here until we decide what's best
|
||||||
registryEndpointsTotal.Set(float64(len(records)))
|
registryEndpointsTotal.Set(float64(len(records)))
|
||||||
regARecords, regAAAARecords := countAddressRecords(records)
|
regARecords, regAAAARecords := countAddressRecords(records)
|
||||||
|
@ -345,6 +345,8 @@ type DNSEndpointList struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RemoveDuplicates returns a slice holding the unique endpoints.
|
// RemoveDuplicates returns a slice holding the unique endpoints.
|
||||||
|
// This function doesn't contemplate the Targets of an Endpoint
|
||||||
|
// as part of the primary Key
|
||||||
func RemoveDuplicates(endpoints []*Endpoint) []*Endpoint {
|
func RemoveDuplicates(endpoints []*Endpoint) []*Endpoint {
|
||||||
visited := make(map[EndpointKey]struct{})
|
visited := make(map[EndpointKey]struct{})
|
||||||
result := []*Endpoint{}
|
result := []*Endpoint{}
|
||||||
|
19
plan/plan.go
19
plan/plan.go
@ -170,6 +170,20 @@ func (p *Plan) Calculate() *Plan {
|
|||||||
if p.DomainFilter == nil {
|
if p.DomainFilter == nil {
|
||||||
p.DomainFilter = endpoint.MatchAllDomainFilters(nil)
|
p.DomainFilter = endpoint.MatchAllDomainFilters(nil)
|
||||||
}
|
}
|
||||||
|
// Root cause of the issue:
|
||||||
|
// Behavior on 0.14.0 on Deletes
|
||||||
|
// ------------------------------------------------------------------------------------------------------
|
||||||
|
// DNSName | Current record | Desired Records (Candidate) |
|
||||||
|
// ------------------------------------------------------------------------------------------------------
|
||||||
|
// dnsname.zone.com |[dnsname.zone.com IN A]dnsname.zone.com IN A (dup ep)| [] |
|
||||||
|
// ------------------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Behavior on 0.13.6 on Deletes
|
||||||
|
// ------------------------------------------------------------------------------------------------------
|
||||||
|
// DNSName | Current record | Desired Records (Candidate) |
|
||||||
|
// ------------------------------------------------------------------------------------------------------
|
||||||
|
// dnsname.zone.com | [dnsname.zone.com IN CNAME ] | [] |
|
||||||
|
// ------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
for _, current := range filterRecordsForPlan(p.Current, p.DomainFilter, p.ManagedRecords, p.ExcludeRecords) {
|
for _, current := range filterRecordsForPlan(p.Current, p.DomainFilter, p.ManagedRecords, p.ExcludeRecords) {
|
||||||
t.addCurrent(current)
|
t.addCurrent(current)
|
||||||
@ -252,10 +266,11 @@ func (p *Plan) Calculate() *Plan {
|
|||||||
// filter out updates this external dns does not have ownership claim over
|
// filter out updates this external dns does not have ownership claim over
|
||||||
if p.OwnerID != "" {
|
if p.OwnerID != "" {
|
||||||
changes.Delete = endpoint.FilterEndpointsByOwnerID(p.OwnerID, changes.Delete)
|
changes.Delete = endpoint.FilterEndpointsByOwnerID(p.OwnerID, changes.Delete)
|
||||||
// Remove duplicated endpoints generated by plan.go on Line 196
|
// Remove duplicated endpoints generated by plan.go on Line 210
|
||||||
changes.Delete = endpoint.RemoveDuplicates(changes.Delete)
|
// changes.Delete = endpoint.RemoveDuplicates(changes.Delete)
|
||||||
// This was not needed on version 0.13.6, but it seems like
|
// This was not needed on version 0.13.6, but it seems like
|
||||||
// the old function/code had the ability of removing duplicated endpoints
|
// the old function/code had the ability of removing duplicated endpoints
|
||||||
|
// While the filterRecordsForPlan and addCurrent functions were running
|
||||||
changes.UpdateOld = endpoint.FilterEndpointsByOwnerID(p.OwnerID, changes.UpdateOld)
|
changes.UpdateOld = endpoint.FilterEndpointsByOwnerID(p.OwnerID, changes.UpdateOld)
|
||||||
changes.UpdateNew = endpoint.FilterEndpointsByOwnerID(p.OwnerID, changes.UpdateNew)
|
changes.UpdateNew = endpoint.FilterEndpointsByOwnerID(p.OwnerID, changes.UpdateNew)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user