Skip to content

Commit

Permalink
Copy the labels map before editing (#4021)
Browse files Browse the repository at this point in the history
  • Loading branch information
johnbelamaric committed Aug 14, 2023
1 parent 571149d commit 36120be
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
9 changes: 6 additions & 3 deletions porch/pkg/cache/packagerevision.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,13 @@ func (c *cachedPackageRevision) GetPackageRevision(ctx context.Context) (*v1alph
return nil, err
}
if c.isLatestRevision {
if rev.Labels == nil {
rev.Labels = map[string]string{}
// copy the labels in case the cached object is being read by another go routine
labels := make(map[string]string, len(rev.Labels))
for k, v := range rev.Labels {
labels[k] = v
}
rev.Labels[v1alpha1.LatestPackageRevisionKey] = v1alpha1.LatestPackageRevisionValue
labels[v1alpha1.LatestPackageRevisionKey] = v1alpha1.LatestPackageRevisionValue
rev.Labels = labels
}
return rev, nil
}
9 changes: 6 additions & 3 deletions porch/pkg/engine/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,13 @@ func (p *PackageRevision) GetPackageRevision(ctx context.Context) (*api.PackageR
}
repoPkgRev.Labels = p.packageRevisionMeta.Labels
if isLatest {
if repoPkgRev.Labels == nil {
repoPkgRev.Labels = make(map[string]string)
// copy the labels in case the cached object is being read by another go routine
labels := make(map[string]string, len(repoPkgRev.Labels))
for k, v := range repoPkgRev.Labels {
labels[k] = v
}
repoPkgRev.Labels[api.LatestPackageRevisionKey] = api.LatestPackageRevisionValue
labels[api.LatestPackageRevisionKey] = api.LatestPackageRevisionValue
repoPkgRev.Labels = labels
}
repoPkgRev.Annotations = p.packageRevisionMeta.Annotations
repoPkgRev.Finalizers = p.packageRevisionMeta.Finalizers
Expand Down

0 comments on commit 36120be

Please sign in to comment.