diff --git a/control/control.go b/control/control.go index a54425168..dd03c7567 100644 --- a/control/control.go +++ b/control/control.go @@ -311,6 +311,7 @@ func (c *Controller) ListenBuildHistory(req *controlapi.BuildHistoryRequest, srv func (c *Controller) UpdateBuildHistory(ctx context.Context, req *controlapi.UpdateBuildHistoryRequest) (*controlapi.UpdateBuildHistoryResponse, error) { if req.Delete { + c.history.Finalize(ctx, req.Ref) // ignore error err := c.history.Delete(ctx, req.Ref) return &controlapi.UpdateBuildHistoryResponse{}, err } diff --git a/snapshot/containerd/content.go b/snapshot/containerd/content.go index c50cc99ac..efbd9db6d 100644 --- a/snapshot/containerd/content.go +++ b/snapshot/containerd/content.go @@ -115,7 +115,20 @@ func (c *nsFallbackStore) Update(ctx context.Context, info content.Info, fieldpa } func (c *nsFallbackStore) Walk(ctx context.Context, fn content.WalkFunc, filters ...string) error { - return c.main.Walk(ctx, fn, filters...) + seen := make(map[digest.Digest]struct{}) + err := c.main.Walk(ctx, func(i content.Info) error { + seen[i.Digest] = struct{}{} + return fn(i) + }, filters...) + if err != nil { + return err + } + return c.fb.Walk(ctx, func(i content.Info) error { + if _, ok := seen[i.Digest]; ok { + return nil + } + return fn(i) + }, filters...) } func (c *nsFallbackStore) Delete(ctx context.Context, dgst digest.Digest) error {