MCPcopy
hub / github.com/minio/minio-go / cleanupVersionedBucket

Function cleanupVersionedBucket

functional_tests.go:242–276  ·  view source on GitHub ↗
(bucketName string, c *minio.Client)

Source from the content-addressed store, hash-verified

240}
241
242func cleanupVersionedBucket(bucketName string, c *minio.Client) error {
243 doneCh := make(chan struct{})
244 defer close(doneCh)
245 for obj := range c.ListObjects(context.Background(), bucketName, minio.ListObjectsOptions{WithVersions: true, Recursive: true}) {
246 if obj.Err != nil {
247 return obj.Err
248 }
249 if obj.Key != "" {
250 err := c.RemoveObject(context.Background(), bucketName, obj.Key,
251 minio.RemoveObjectOptions{VersionID: obj.VersionID, GovernanceBypass: true})
252 if err != nil {
253 return err
254 }
255 }
256 }
257 for objPartInfo := range c.ListIncompleteUploads(context.Background(), bucketName, "", true) {
258 if objPartInfo.Err != nil {
259 return objPartInfo.Err
260 }
261 if objPartInfo.Key != "" {
262 err := c.RemoveIncompleteUpload(context.Background(), bucketName, objPartInfo.Key)
263 if err != nil {
264 return err
265 }
266 }
267 }
268 // objects are already deleted, clear the buckets now
269 err := c.RemoveBucket(context.Background(), bucketName)
270 if err != nil {
271 for obj := range c.ListObjects(context.Background(), bucketName, minio.ListObjectsOptions{WithVersions: true, Recursive: true}) {
272 slog.Info("found object", "key", obj.Key, "version", obj.VersionID)
273 }
274 }
275 return err
276}
277
278func isErrNotImplemented(err error) bool {
279 return minio.ToErrorResponse(err).Code == minio.NotImplemented

Calls 5

RemoveObjectMethod · 0.80
ListIncompleteUploadsMethod · 0.80
RemoveBucketMethod · 0.80
ListObjectsMethod · 0.45

Tested by

no test coverage detected