From fd421ddd6f473f7ec832a943ebef2ddd87560c1a Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Mon, 18 Sep 2023 10:25:31 -0700 Subject: [PATCH] skip tiered objects to GLACIER in batch replication (#18044) tiered objects to GLACIER are not readable until they are restored, we skip these as unreadable --- cmd/batch-handlers.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmd/batch-handlers.go b/cmd/batch-handlers.go index 39c525db4..3bf2b056f 100644 --- a/cmd/batch-handlers.go +++ b/cmd/batch-handlers.go @@ -251,6 +251,8 @@ func (r *BatchJobReplicateV1) copyWithMultipartfromSource(ctx context.Context, a return err } +const s3StorageClassGlacier = "GLACIER" + // StartFromSource starts the batch replication job from remote source, resumes if there was a pending job via "job.ID" func (r *BatchJobReplicateV1) StartFromSource(ctx context.Context, api ObjectLayer, job BatchJobRequest) error { ri := &batchJobInfo{ @@ -381,6 +383,12 @@ func (r *BatchJobReplicateV1) StartFromSource(ctx context.Context, api ObjectLay skipReplicate := false for obj := range objInfoCh { + if s3Type && obj.StorageClass == s3StorageClassGlacier { + // Skip GLACIER tiered objects for AWS S3 or any S3 + // compatible object storage vendors. + continue + } + oi := toObjectInfo(r.Source.Bucket, obj.Key, obj) if !minioSrc { oi2, err := c.StatObject(ctx, r.Source.Bucket, obj.Key, miniogo.StatObjectOptions{})