github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/storage/bucket/bucket_util.go (about) 1 package bucket 2 3 import ( 4 "context" 5 "strings" 6 7 "github.com/go-kit/log" 8 "github.com/go-kit/log/level" 9 "github.com/thanos-io/thanos/pkg/objstore" 10 ) 11 12 // DeletePrefix removes all objects with given prefix, recursively. 13 // It returns number of deleted objects. 14 // If deletion of any object fails, it returns error and stops. 15 func DeletePrefix(ctx context.Context, bkt objstore.Bucket, prefix string, logger log.Logger) (int, error) { 16 result := 0 17 err := bkt.Iter(ctx, prefix, func(name string) error { 18 if strings.HasSuffix(name, objstore.DirDelim) { 19 deleted, err := DeletePrefix(ctx, bkt, name, logger) 20 result += deleted 21 return err 22 } 23 24 if err := bkt.Delete(ctx, name); err != nil { 25 return err 26 } 27 result++ 28 level.Debug(logger).Log("msg", "deleted file", "file", name) 29 return nil 30 }) 31 32 return result, err 33 }