mirror of
https://github.com/minio/minio.git
synced 2025-04-12 07:22:18 -04:00
avoid replication proxy on version excluded paths (#14878)
no need to attempt proxying objects that were never replicated, but do have local `null` versions on them.
This commit is contained in:
parent
5cffd3780a
commit
62aa42cccf
@ -1600,7 +1600,11 @@ func proxyGetToReplicationTarget(ctx context.Context, bucket, object string, rs
|
|||||||
return reader, proxyResult{Proxy: true}, nil
|
return reader, proxyResult{Proxy: true}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getproxyTargets(ctx context.Context, bucket, object string, opts ObjectOptions) (tgts *madmin.BucketTargets) {
|
func getProxyTargets(ctx context.Context, bucket, object string, opts ObjectOptions) (tgts *madmin.BucketTargets) {
|
||||||
|
if opts.VersionSuspended {
|
||||||
|
return &madmin.BucketTargets{}
|
||||||
|
}
|
||||||
|
|
||||||
cfg, err := getReplicationConfig(ctx, bucket)
|
cfg, err := getReplicationConfig(ctx, bucket)
|
||||||
if err != nil || cfg == nil {
|
if err != nil || cfg == nil {
|
||||||
return &madmin.BucketTargets{}
|
return &madmin.BucketTargets{}
|
||||||
|
@ -157,6 +157,7 @@ func getOpts(ctx context.Context, r *http.Request, bucket, object string) (Objec
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
opts.VersionSuspended = globalBucketVersioningSys.PrefixSuspended(bucket, object)
|
||||||
return opts, nil
|
return opts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -425,7 +425,7 @@ func (api objectAPIHandlers) getObjectHandler(ctx context.Context, objectAPI Obj
|
|||||||
proxy proxyResult
|
proxy proxyResult
|
||||||
perr error
|
perr error
|
||||||
)
|
)
|
||||||
proxytgts := getproxyTargets(ctx, bucket, object, opts)
|
proxytgts := getProxyTargets(ctx, bucket, object, opts)
|
||||||
if !proxytgts.Empty() {
|
if !proxytgts.Empty() {
|
||||||
// proxy to replication target if active-active replication is in place.
|
// proxy to replication target if active-active replication is in place.
|
||||||
reader, proxy, perr = proxyGetToReplicationTarget(ctx, bucket, object, rs, r.Header, opts, proxytgts)
|
reader, proxy, perr = proxyGetToReplicationTarget(ctx, bucket, object, rs, r.Header, opts, proxytgts)
|
||||||
@ -662,7 +662,7 @@ func (api objectAPIHandlers) headObjectHandler(ctx context.Context, objectAPI Ob
|
|||||||
oi ObjectInfo
|
oi ObjectInfo
|
||||||
)
|
)
|
||||||
// proxy HEAD to replication target if active-active replication configured on bucket
|
// proxy HEAD to replication target if active-active replication configured on bucket
|
||||||
proxytgts := getproxyTargets(ctx, bucket, object, opts)
|
proxytgts := getProxyTargets(ctx, bucket, object, opts)
|
||||||
if !proxytgts.Empty() {
|
if !proxytgts.Empty() {
|
||||||
if rangeHeader != "" {
|
if rangeHeader != "" {
|
||||||
rs, _ = parseRequestRangeSpec(rangeHeader)
|
rs, _ = parseRequestRangeSpec(rangeHeader)
|
||||||
|
@ -93,7 +93,7 @@ To exclude objects under a list of prefix (glob) patterns from being versioned,
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
- Objects matching these prefixes will behave as though versioning were suspended. These objects **will not** be replicated if bucket has replication configured.
|
- Objects matching these prefixes will behave as though versioning were suspended. These objects **will not** be replicated if bucket has replication configured.
|
||||||
- Objects matching these prefixes will also not leave delete markers, dramatically reduces namespace pollution while keeping the benefits of replication.
|
- Objects matching these prefixes will also not leave `null` delete markers, dramatically reduces namespace pollution while keeping the benefits of replication.
|
||||||
- Users with explicit permissions or the root credential can configure the versioning state of any bucket.
|
- Users with explicit permissions or the root credential can configure the versioning state of any bucket.
|
||||||
|
|
||||||
## Examples of enabling bucket versioning using MinIO Java SDK
|
## Examples of enabling bucket versioning using MinIO Java SDK
|
||||||
|
Loading…
x
Reference in New Issue
Block a user