mirror of
https://github.com/minio/minio.git
synced 2025-04-01 10:13:42 -04:00
replication: Avoid proxying if requested object is a deletemarker (#19656)
Fixes: #19654
This commit is contained in:
parent
04f92f1291
commit
446c760820
@ -488,21 +488,24 @@ func (api objectAPIHandlers) getObjectHandler(ctx context.Context, objectAPI Obj
|
|||||||
reader *GetObjectReader
|
reader *GetObjectReader
|
||||||
perr error
|
perr error
|
||||||
)
|
)
|
||||||
proxytgts := getProxyTargets(ctx, bucket, object, opts)
|
// avoid proxying if version is a delete marker
|
||||||
if !proxytgts.Empty() {
|
if !isErrMethodNotAllowed(err) && !(gr != nil && gr.ObjInfo.DeleteMarker) {
|
||||||
globalReplicationStats.incProxy(bucket, getObjectAPI, false)
|
proxytgts := getProxyTargets(ctx, bucket, object, opts)
|
||||||
// proxy to replication target if active-active replication is in place.
|
if !proxytgts.Empty() {
|
||||||
reader, proxy, perr = proxyGetToReplicationTarget(ctx, bucket, object, rs, r.Header, opts, proxytgts)
|
globalReplicationStats.incProxy(bucket, getObjectAPI, false)
|
||||||
if perr != nil {
|
// proxy to replication target if active-active replication is in place.
|
||||||
globalReplicationStats.incProxy(bucket, getObjectAPI, true)
|
reader, proxy, perr = proxyGetToReplicationTarget(ctx, bucket, object, rs, r.Header, opts, proxytgts)
|
||||||
proxyGetErr := ErrorRespToObjectError(perr, bucket, object)
|
if perr != nil {
|
||||||
if !isErrBucketNotFound(proxyGetErr) && !isErrObjectNotFound(proxyGetErr) && !isErrVersionNotFound(proxyGetErr) &&
|
globalReplicationStats.incProxy(bucket, getObjectAPI, true)
|
||||||
!isErrPreconditionFailed(proxyGetErr) && !isErrInvalidRange(proxyGetErr) {
|
proxyGetErr := ErrorRespToObjectError(perr, bucket, object)
|
||||||
replLogIf(ctx, fmt.Errorf("Proxying request (replication) failed for %s/%s(%s) - %w", bucket, object, opts.VersionID, perr))
|
if !isErrBucketNotFound(proxyGetErr) && !isErrObjectNotFound(proxyGetErr) && !isErrVersionNotFound(proxyGetErr) &&
|
||||||
|
!isErrPreconditionFailed(proxyGetErr) && !isErrInvalidRange(proxyGetErr) {
|
||||||
|
replLogIf(ctx, fmt.Errorf("Proxying request (replication) failed for %s/%s(%s) - %w", bucket, object, opts.VersionID, perr))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if reader != nil && proxy.Proxy && perr == nil {
|
||||||
|
gr = reader
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if reader != nil && proxy.Proxy && perr == nil {
|
|
||||||
gr = reader
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if reader == nil || !proxy.Proxy {
|
if reader == nil || !proxy.Proxy {
|
||||||
@ -1024,7 +1027,7 @@ func (api objectAPIHandlers) headObjectHandler(ctx context.Context, objectAPI Ob
|
|||||||
|
|
||||||
objInfo, err := getObjectInfo(ctx, bucket, object, opts)
|
objInfo, err := getObjectInfo(ctx, bucket, object, opts)
|
||||||
var proxy proxyResult
|
var proxy proxyResult
|
||||||
if err != nil {
|
if err != nil && !objInfo.DeleteMarker && !isErrMethodNotAllowed(err) {
|
||||||
// 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() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user