diff --git a/cmd/batch-handlers.go b/cmd/batch-handlers.go index 4a932b8e3..7f62ecc59 100644 --- a/cmd/batch-handlers.go +++ b/cmd/batch-handlers.go @@ -277,7 +277,7 @@ func (r *BatchJobReplicateV1) StartFromSource(ctx context.Context, api ObjectLay } rnd := rand.New(rand.NewSource(time.Now().UnixNano())) - isTags := len(r.Flags.Filter.Tags) != 0 + hasTags := len(r.Flags.Filter.Tags) != 0 isMetadata := len(r.Flags.Filter.Metadata) != 0 isStorageClassOnly := len(r.Flags.Filter.Metadata) == 1 && strings.EqualFold(r.Flags.Filter.Metadata[0].Key, xhttp.AmzStorageClass) @@ -302,7 +302,7 @@ func (r *BatchJobReplicateV1) StartFromSource(ctx context.Context, api ObjectLay return true } - if isTags { + if hasTags { // Only parse object tags if tags filter is specified. tagMap := map[string]string{} tagStr := oi.UserTags @@ -407,7 +407,7 @@ func (r *BatchJobReplicateV1) StartFromSource(ctx context.Context, api ObjectLay continue } } - if isTags { + if hasTags { tags, err := c.GetObjectTagging(ctx, r.Source.Bucket, obj.Key, minio.GetObjectTaggingOptions{}) if err == nil { oi.UserTags = tags.String() diff --git a/cmd/batch-rotate.go b/cmd/batch-rotate.go index 491826246..b50bfc236 100644 --- a/cmd/batch-rotate.go +++ b/cmd/batch-rotate.go @@ -274,7 +274,7 @@ func (r *BatchJobKeyRotateV1) Start(ctx context.Context, api ObjectLayer, job Ba rnd := rand.New(rand.NewSource(time.Now().UnixNano())) - skip := func(info FileInfo) (ok bool) { + selectObj := func(info FileInfo) (ok bool) { if r.Flags.Filter.OlderThan > 0 && time.Since(info.ModTime) < r.Flags.Filter.OlderThan { // skip all objects that are newer than specified older duration return false @@ -360,7 +360,7 @@ func (r *BatchJobKeyRotateV1) Start(ctx context.Context, api ObjectLayer, job Ba results := make(chan ObjectInfo, 100) if err := api.Walk(ctx, r.Bucket, r.Prefix, results, WalkOptions{ Marker: lastObject, - Filter: skip, + Filter: selectObj, }); err != nil { cancel() // Do not need to retry if we can't list objects on source. diff --git a/cmd/mrf.go b/cmd/mrf.go index bd82863e5..12da25d50 100644 --- a/cmd/mrf.go +++ b/cmd/mrf.go @@ -22,6 +22,7 @@ import ( "time" "github.com/minio/madmin-go/v3" + "github.com/minio/pkg/v2/wildcard" ) const ( @@ -73,6 +74,25 @@ func (m *mrfState) healRoutine(z *erasureServerPools) { return } + // We might land at .metacache, .trash, .multipart + // no need to heal them skip, only when bucket + // is '.minio.sys' + if u.bucket == minioMetaBucket { + // No MRF needed for temporary objects + if wildcard.Match("buckets/*/.metacache/*", u.object) { + continue + } + if wildcard.Match("tmp/*", u.object) { + continue + } + if wildcard.Match("multipart/*", u.object) { + continue + } + if wildcard.Match("tmp-old/*", u.object) { + continue + } + } + now := time.Now() if now.Sub(u.queued) < time.Second { // let recently failed networks to reconnect