diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go index b00ec8a269..e9cd9fa175 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go @@ -149,6 +149,25 @@ func (r *SatResolver) SolveOperators(namespaces []string, csvs []*v1alpha1.Clust errs = append(errs, err) continue } + + // copy consumed fields to avoid directly mutating cache + op = &Operator{ + name: op.name, + replaces: op.replaces, + providedAPIs: op.providedAPIs, + requiredAPIs: op.requiredAPIs, + version: op.version, + sourceInfo: &OperatorSourceInfo{ + Package: op.sourceInfo.Package, + Channel: op.sourceInfo.Channel, + StartingCSV: op.sourceInfo.StartingCSV, + Catalog: op.sourceInfo.Catalog, + DefaultChannel: op.sourceInfo.DefaultChannel, + Subscription: op.sourceInfo.Subscription, + }, + properties: op.properties, + skips: op.skips, + } if len(installableOperator.Replaces) > 0 { op.replaces = installableOperator.Replaces } diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go index b00ec8a269..e9cd9fa175 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go @@ -149,6 +149,25 @@ func (r *SatResolver) SolveOperators(namespaces []string, csvs []*v1alpha1.Clust errs = append(errs, err) continue } + + // copy consumed fields to avoid directly mutating cache + op = &Operator{ + name: op.name, + replaces: op.replaces, + providedAPIs: op.providedAPIs, + requiredAPIs: op.requiredAPIs, + version: op.version, + sourceInfo: &OperatorSourceInfo{ + Package: op.sourceInfo.Package, + Channel: op.sourceInfo.Channel, + StartingCSV: op.sourceInfo.StartingCSV, + Catalog: op.sourceInfo.Catalog, + DefaultChannel: op.sourceInfo.DefaultChannel, + Subscription: op.sourceInfo.Subscription, + }, + properties: op.properties, + skips: op.skips, + } if len(installableOperator.Replaces) > 0 { op.replaces = installableOperator.Replaces }