Open krasoffski opened 6 months ago
The Kubernetes project currently lacks enough contributors to adequately respond to all issues.
This bot triages un-triaged issues according to the following rules:
lifecycle/stale
is appliedlifecycle/stale
was applied, lifecycle/rotten
is appliedlifecycle/rotten
was applied, the issue is closedYou can:
/remove-lifecycle stale
/close
Please send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale
/remove-lifecycle stale
/remove-lifecycle stale
What happened: Controller
RunOnce
get Records and than Source Endpoints. After this, it performsAdjustEndpoints
for Source Endpoints.Here is simplified part.
During getting Source Endpoints:
endpoints, err := c.Source.Endpoints(ctx)
also performed de-duplication based on following attributes:DNSName
,Targets
andSetIdentifier
.Here is de-duplication simplified code:
Thus, some Source Endpoints from sources are deleted before they are updated by
AdjustEndpoints
. This leads to unexpected deletion de-duplicated records from DNS because they are de-deplicated before callAdjustEndpoints
. For example,SetIdentifier
can be set or updated viaAdjustEndpoints
call to provider, after this Source Endpoint can became unique but has been de-duplicated before.Or vice-versa case, provider can change
SetIdentifier
and Endpoint afterAdjustEndpoints
will be (should be) de-duplicated.Finally, changed
SetIdentifier
used inplanKey
which with looks like a broken logic when we might perform de-duplication using differentSetIdentifier
value.What you expected to happen: I expect that Source Endpoints de-duplication performed after
AdjustEndpoints
call.How to reproduce it (as minimally and precisely as possible): It is clear from code.
Environment:
BTW, I know there is annotation for setting
SetIdentifier
property, but it not solve this logic withAdjustEndpoints
.