| 48 | } |
| 49 | |
| 50 | func (rw *readerWriter) ClearBlock(blockID uuid.UUID, tenantID string) error { |
| 51 | if len(tenantID) == 0 { |
| 52 | return backend.ErrEmptyTenantID |
| 53 | } |
| 54 | if blockID == uuid.Nil { |
| 55 | return backend.ErrEmptyBlockID |
| 56 | } |
| 57 | |
| 58 | path := backend.RootPath(blockID, tenantID, rw.cfg.Prefix) + "/" |
| 59 | level.Debug(rw.logger).Log("msg", "deleting block", "block path", path) |
| 60 | |
| 61 | // ListObjects(bucket, prefix, marker, delimiter string, maxKeys int) |
| 62 | res, err := rw.core.ListObjects(rw.cfg.Bucket, path, "", "/", 0) |
| 63 | if err != nil { |
| 64 | return fmt.Errorf("error listing objects in bucket %s: %w", rw.cfg.Bucket, err) |
| 65 | } |
| 66 | |
| 67 | level.Debug(rw.logger).Log("msg", "listing objects", "found", len(res.Contents)) |
| 68 | for _, obj := range res.Contents { |
| 69 | err = rw.core.RemoveObject(context.TODO(), rw.cfg.Bucket, obj.Key, minio.RemoveObjectOptions{}) |
| 70 | if err != nil { |
| 71 | return fmt.Errorf("error deleting obj from s3: %s: %w", obj.Key, err) |
| 72 | } |
| 73 | } |
| 74 | |
| 75 | return nil |
| 76 | } |
| 77 | |
| 78 | func (rw *readerWriter) CompactedBlockMeta(blockID uuid.UUID, tenantID string) (*backend.CompactedBlockMeta, error) { |
| 79 | if len(tenantID) == 0 { |