MCPcopy
hub / github.com/helm/helm / removeLeastRecent

Method removeLeastRecent

pkg/storage/storage.go:223–290  ·  view source on GitHub ↗

removeLeastRecent removes items from history until the length number of releases does not exceed max. We allow max to be set explicitly so that calling functions can "make space" for the new records they are going to write.

(name string, maximum int)

Source from the content-addressed store, hash-verified

221// We allow max to be set explicitly so that calling functions can "make space"
222// for the new records they are going to write.
223func (s *Storage) removeLeastRecent(name string, maximum int) error {
224 if maximum < 0 {
225 return nil
226 }
227 h, err := s.History(name)
228 if err != nil {
229 return err
230 }
231 if len(h) <= maximum {
232 return nil
233 }
234 rls, err := releaseListToV1List(h)
235 if err != nil {
236 return err
237 }
238
239 // We want oldest to newest
240 relutil.SortByRevision(rls)
241
242 lastDeployed, err := s.Deployed(name)
243 if err != nil && !errors.Is(err, driver.ErrNoDeployedReleases) {
244 return err
245 }
246
247 var toDelete []release.Releaser
248 for _, rel := range rls {
249 // once we have enough releases to delete to reach the maximum, stop
250 if len(rls)-len(toDelete) == maximum {
251 break
252 }
253 if lastDeployed != nil {
254 ldac, err := release.NewAccessor(lastDeployed)
255 if err != nil {
256 return err
257 }
258 if rel.Version != ldac.Version() {
259 toDelete = append(toDelete, rel)
260 }
261 } else {
262 toDelete = append(toDelete, rel)
263 }
264 }
265
266 // Delete as many as possible. In the case of API throughput limitations,
267 // multiple invocations of this function will eventually delete them all.
268 errs := []error{}
269 for _, rel := range toDelete {
270 rac, err := release.NewAccessor(rel)
271 if err != nil {
272 errs = append(errs, err)
273 continue
274 }
275 err = s.deleteReleaseVersion(name, rac.Version())
276 if err != nil {
277 errs = append(errs, err)
278 }
279 }
280

Callers 1

CreateMethod · 0.95

Calls 7

HistoryMethod · 0.95
DeployedMethod · 0.95
VersionMethod · 0.95
deleteReleaseVersionMethod · 0.95
IsMethod · 0.80
releaseListToV1ListFunction · 0.70
LoggerMethod · 0.65

Tested by

no test coverage detected