mirror of
https://github.com/minio/minio.git
synced 2025-02-02 17:35:58 -05:00
avoid triggering heals on metacache files if any (#19299)
This commit is contained in:
parent
383489d5d9
commit
1173b26fc8
@ -277,7 +277,7 @@ func (r *BatchJobReplicateV1) StartFromSource(ctx context.Context, api ObjectLay
|
|||||||
}
|
}
|
||||||
rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
|
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
|
isMetadata := len(r.Flags.Filter.Metadata) != 0
|
||||||
isStorageClassOnly := len(r.Flags.Filter.Metadata) == 1 && strings.EqualFold(r.Flags.Filter.Metadata[0].Key, xhttp.AmzStorageClass)
|
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
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
if isTags {
|
if hasTags {
|
||||||
// Only parse object tags if tags filter is specified.
|
// Only parse object tags if tags filter is specified.
|
||||||
tagMap := map[string]string{}
|
tagMap := map[string]string{}
|
||||||
tagStr := oi.UserTags
|
tagStr := oi.UserTags
|
||||||
@ -407,7 +407,7 @@ func (r *BatchJobReplicateV1) StartFromSource(ctx context.Context, api ObjectLay
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if isTags {
|
if hasTags {
|
||||||
tags, err := c.GetObjectTagging(ctx, r.Source.Bucket, obj.Key, minio.GetObjectTaggingOptions{})
|
tags, err := c.GetObjectTagging(ctx, r.Source.Bucket, obj.Key, minio.GetObjectTaggingOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
oi.UserTags = tags.String()
|
oi.UserTags = tags.String()
|
||||||
|
@ -274,7 +274,7 @@ func (r *BatchJobKeyRotateV1) Start(ctx context.Context, api ObjectLayer, job Ba
|
|||||||
|
|
||||||
rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
|
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 {
|
if r.Flags.Filter.OlderThan > 0 && time.Since(info.ModTime) < r.Flags.Filter.OlderThan {
|
||||||
// skip all objects that are newer than specified older duration
|
// skip all objects that are newer than specified older duration
|
||||||
return false
|
return false
|
||||||
@ -360,7 +360,7 @@ func (r *BatchJobKeyRotateV1) Start(ctx context.Context, api ObjectLayer, job Ba
|
|||||||
results := make(chan ObjectInfo, 100)
|
results := make(chan ObjectInfo, 100)
|
||||||
if err := api.Walk(ctx, r.Bucket, r.Prefix, results, WalkOptions{
|
if err := api.Walk(ctx, r.Bucket, r.Prefix, results, WalkOptions{
|
||||||
Marker: lastObject,
|
Marker: lastObject,
|
||||||
Filter: skip,
|
Filter: selectObj,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
cancel()
|
cancel()
|
||||||
// Do not need to retry if we can't list objects on source.
|
// Do not need to retry if we can't list objects on source.
|
||||||
|
20
cmd/mrf.go
20
cmd/mrf.go
@ -22,6 +22,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/minio/madmin-go/v3"
|
"github.com/minio/madmin-go/v3"
|
||||||
|
"github.com/minio/pkg/v2/wildcard"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -73,6 +74,25 @@ func (m *mrfState) healRoutine(z *erasureServerPools) {
|
|||||||
return
|
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()
|
now := time.Now()
|
||||||
if now.Sub(u.queued) < time.Second {
|
if now.Sub(u.queued) < time.Second {
|
||||||
// let recently failed networks to reconnect
|
// let recently failed networks to reconnect
|
||||||
|
Loading…
x
Reference in New Issue
Block a user