From 6ea083d1979ead7200341f9bebef81d202a79cfc Mon Sep 17 00:00:00 2001 From: Krishnan Parthasarathi Date: Tue, 20 Jul 2021 10:49:52 -0700 Subject: [PATCH] Add deployment-id and source bucket to transitioned object name (#12693) This allows remote bucket admin to identify the origin of transitioned objects by simply inspecting the object prefixes. e.g let's take a remote tier TIER-1 pointing to a remote bucket (prefix) testbucket/testprefix-1. The remote bucket admin can list all transitioned objects from a MinIO deployment identified by '2e78e906-1c5d-4f94-8689-9df44cafde39' and source bucket 'mybucket' like so, ``` $ ./mc ls -r minio-tier-target/testbucket/testprefix-1/2e78e906-1c5d-4f94-8689-9df44cafde39/mybucket/ [2021-07-12 17:15:50 PDT] 160B 48/fb/48fbc0e6-3a73-458b-9337-8e722c619ca4 [2021-07-12 16:58:46 PDT] 160B 7d/1c/7d1c96bd-031a-48d4-99ea-b1304e870830 ``` --- cmd/bucket-lifecycle.go | 4 ++-- cmd/erasure-object.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/bucket-lifecycle.go b/cmd/bucket-lifecycle.go index 1ba30c846..ad15377f1 100644 --- a/cmd/bucket-lifecycle.go +++ b/cmd/bucket-lifecycle.go @@ -269,13 +269,13 @@ func expireTransitionedObject(ctx context.Context, objectAPI ObjectLayer, oi *Ob } // generate an object name for transitioned object -func genTransitionObjName() (string, error) { +func genTransitionObjName(bucket string) (string, error) { u, err := uuid.NewRandom() if err != nil { return "", err } us := u.String() - obj := fmt.Sprintf("%s/%s/%s", us[0:2], us[2:4], us) + obj := fmt.Sprintf("%s/%s/%s/%s/%s", globalDeploymentID, bucket, us[0:2], us[2:4], us) return obj, nil } diff --git a/cmd/erasure-object.go b/cmd/erasure-object.go index c21b5e764..4b1bef5e4 100644 --- a/cmd/erasure-object.go +++ b/cmd/erasure-object.go @@ -1399,7 +1399,7 @@ func (er erasureObjects) TransitionObject(ctx context.Context, bucket, object st return nil } - destObj, err := genTransitionObjName() + destObj, err := genTransitionObjName(bucket) if err != nil { return err }