While working on fluxcd/pkg#976 I noticed that helm-controller is not sorting the enqueued requests for a source event in the dependency order like kustomize-controller.
kustomize-controller:
https://github.com/fluxcd/kustomize-controller/blob/52170876d58b21b3735ce26cd3eadcc123a4706e/internal/controller/kustomization_indexers.go#L67-L77
helm-controller HelmChart:
|
var list v2.HelmReleaseList |
|
if err := r.List(ctx, &list, client.MatchingFields{ |
|
v2.SourceIndexKey: client.ObjectKeyFromObject(hc).String(), |
|
}); err != nil { |
|
ctrl.LoggerFrom(ctx).Error(err, "failed to list HelmReleases for HelmChart change") |
|
return nil |
|
} |
|
|
|
var reqs []reconcile.Request |
|
for i, hr := range list.Items { |
|
// If the HelmRelease is ready and the revision of the artifact equals to the |
|
// last attempted revision, we should not make a request for this HelmRelease |
|
if conditions.IsReady(&list.Items[i]) && hc.GetArtifact().HasRevision(hr.Status.GetLastAttemptedRevision()) { |
|
continue |
|
} |
|
reqs = append(reqs, reconcile.Request{NamespacedName: client.ObjectKeyFromObject(&list.Items[i])}) |
|
} |
|
return reqs |
helm-controller OCIRepository:
|
var list v2.HelmReleaseList |
|
if err := r.List(ctx, &list, client.MatchingFields{ |
|
v2.SourceIndexKey: client.ObjectKeyFromObject(or).String(), |
|
}); err != nil { |
|
ctrl.LoggerFrom(ctx).Error(err, "failed to list HelmReleases for OCIRepository change") |
|
return nil |
|
} |
|
|
|
var reqs []reconcile.Request |
|
for i, hr := range list.Items { |
|
// If the HelmRelease is ready and the digest of the artifact equals to the |
|
// last attempted revision digest, we should not make a request for this HelmRelease, |
|
// likewise if we cannot retrieve the artifact digest. |
|
digest := extractDigest(or.GetArtifact().Revision) |
|
if digest == "" { |
|
ctrl.LoggerFrom(ctx).Error(fmt.Errorf("wrong digest for %T", or), "failed to get requests for OCIRepository change") |
|
continue |
|
} |
|
|
|
if digest == hr.Status.LastAttemptedRevisionDigest { |
|
continue |
|
} |
|
|
|
reqs = append(reqs, reconcile.Request{NamespacedName: client.ObjectKeyFromObject(&list.Items[i])}) |
|
} |
|
return reqs |
While working on fluxcd/pkg#976 I noticed that helm-controller is not sorting the enqueued requests for a source event in the dependency order like kustomize-controller.
kustomize-controller:
https://github.com/fluxcd/kustomize-controller/blob/52170876d58b21b3735ce26cd3eadcc123a4706e/internal/controller/kustomization_indexers.go#L67-L77
helm-controller HelmChart:
helm-controller/internal/controller/helmrelease_controller.go
Lines 786 to 803 in 2bb5c51
helm-controller OCIRepository:
helm-controller/internal/controller/helmrelease_controller.go
Lines 818 to 843 in 2bb5c51