mirror of
https://github.com/minio/minio.git
synced 2025-01-13 07:53:21 -05:00
Revert "cleanup: Simplify usage of MinIOSourceProxyRequest (#19553)"
This reverts commit 928c0181bf
.
This change was not correct, reverting.
We track 3 states with the ProxyRequest header - if replication process wants
to know if object is already replicated with a HEAD, it shouldn't proxy back
- Poorna
This commit is contained in:
parent
3e32ceb39f
commit
1aa8896ad6
@ -2226,7 +2226,7 @@ func getProxyTargets(ctx context.Context, bucket, object string, opts ObjectOpti
|
|||||||
if opts.VersionSuspended {
|
if opts.VersionSuspended {
|
||||||
return &madmin.BucketTargets{}
|
return &madmin.BucketTargets{}
|
||||||
}
|
}
|
||||||
if opts.ProxyRequest {
|
if opts.ProxyRequest || (opts.ProxyHeaderSet && !opts.ProxyRequest) {
|
||||||
return &madmin.BucketTargets{}
|
return &madmin.BucketTargets{}
|
||||||
}
|
}
|
||||||
cfg, err := getReplicationConfig(ctx, bucket)
|
cfg, err := getReplicationConfig(ctx, bucket)
|
||||||
@ -2247,7 +2247,7 @@ func getProxyTargets(ctx context.Context, bucket, object string, opts ObjectOpti
|
|||||||
func proxyHeadToRepTarget(ctx context.Context, bucket, object string, rs *HTTPRangeSpec, opts ObjectOptions, proxyTargets *madmin.BucketTargets) (tgt *TargetClient, oi ObjectInfo, proxy proxyResult) {
|
func proxyHeadToRepTarget(ctx context.Context, bucket, object string, rs *HTTPRangeSpec, opts ObjectOptions, proxyTargets *madmin.BucketTargets) (tgt *TargetClient, oi ObjectInfo, proxy proxyResult) {
|
||||||
// this option is set when active-active replication is in place between site A -> B,
|
// this option is set when active-active replication is in place between site A -> B,
|
||||||
// and site B does not have the object yet.
|
// and site B does not have the object yet.
|
||||||
if opts.ProxyRequest { // true only when site B sets MinIOSourceProxyRequest header
|
if opts.ProxyRequest || (opts.ProxyHeaderSet && !opts.ProxyRequest) { // true only when site B sets MinIOSourceProxyRequest header
|
||||||
return nil, oi, proxy
|
return nil, oi, proxy
|
||||||
}
|
}
|
||||||
var perr error
|
var perr error
|
||||||
@ -2372,7 +2372,7 @@ func scheduleReplication(ctx context.Context, oi ObjectInfo, o ObjectLayer, dsc
|
|||||||
func proxyTaggingToRepTarget(ctx context.Context, bucket, object string, tags *tags.Tags, opts ObjectOptions, proxyTargets *madmin.BucketTargets) (proxy proxyResult) {
|
func proxyTaggingToRepTarget(ctx context.Context, bucket, object string, tags *tags.Tags, opts ObjectOptions, proxyTargets *madmin.BucketTargets) (proxy proxyResult) {
|
||||||
// this option is set when active-active replication is in place between site A -> B,
|
// this option is set when active-active replication is in place between site A -> B,
|
||||||
// and request hits site B that does not have the object yet.
|
// and request hits site B that does not have the object yet.
|
||||||
if opts.ProxyRequest { // true only when site B sets MinIOSourceProxyRequest header
|
if opts.ProxyRequest || (opts.ProxyHeaderSet && !opts.ProxyRequest) { // true only when site B sets MinIOSourceProxyRequest header
|
||||||
return proxy
|
return proxy
|
||||||
}
|
}
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
@ -2440,7 +2440,7 @@ func proxyTaggingToRepTarget(ctx context.Context, bucket, object string, tags *t
|
|||||||
func proxyGetTaggingToRepTarget(ctx context.Context, bucket, object string, opts ObjectOptions, proxyTargets *madmin.BucketTargets) (tgs *tags.Tags, proxy proxyResult) {
|
func proxyGetTaggingToRepTarget(ctx context.Context, bucket, object string, opts ObjectOptions, proxyTargets *madmin.BucketTargets) (tgs *tags.Tags, proxy proxyResult) {
|
||||||
// this option is set when active-active replication is in place between site A -> B,
|
// this option is set when active-active replication is in place between site A -> B,
|
||||||
// and request hits site B that does not have the object yet.
|
// and request hits site B that does not have the object yet.
|
||||||
if opts.ProxyRequest { // true only when site B sets MinIOSourceProxyRequest header
|
if opts.ProxyRequest || (opts.ProxyHeaderSet && !opts.ProxyRequest) { // true only when site B sets MinIOSourceProxyRequest header
|
||||||
return nil, proxy
|
return nil, proxy
|
||||||
}
|
}
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
@ -90,6 +90,7 @@ type ObjectOptions struct {
|
|||||||
PreserveETag string // preserves this etag during a PUT call.
|
PreserveETag string // preserves this etag during a PUT call.
|
||||||
NoLock bool // indicates to lower layers if the caller is expecting to hold locks.
|
NoLock bool // indicates to lower layers if the caller is expecting to hold locks.
|
||||||
ProxyRequest bool // only set for GET/HEAD in active-active replication scenario
|
ProxyRequest bool // only set for GET/HEAD in active-active replication scenario
|
||||||
|
ProxyHeaderSet bool // only set for GET/HEAD in active-active replication scenario
|
||||||
ReplicationRequest bool // true only if replication request
|
ReplicationRequest bool // true only if replication request
|
||||||
ReplicationSourceTaggingTimestamp time.Time // set if MinIOSourceTaggingTimestamp received
|
ReplicationSourceTaggingTimestamp time.Time // set if MinIOSourceTaggingTimestamp received
|
||||||
ReplicationSourceLegalholdTimestamp time.Time // set if MinIOSourceObjectLegalholdTimestamp received
|
ReplicationSourceLegalholdTimestamp time.Time // set if MinIOSourceObjectLegalholdTimestamp received
|
||||||
|
@ -66,8 +66,13 @@ func getDefaultOpts(header http.Header, copySource bool, metadata map[string]str
|
|||||||
if crypto.S3.IsRequested(header) || (metadata != nil && crypto.S3.IsEncrypted(metadata)) {
|
if crypto.S3.IsRequested(header) || (metadata != nil && crypto.S3.IsEncrypted(metadata)) {
|
||||||
opts.ServerSideEncryption = encrypt.NewSSE()
|
opts.ServerSideEncryption = encrypt.NewSSE()
|
||||||
}
|
}
|
||||||
_, opts.ProxyRequest = header[xhttp.MinIOSourceProxyRequest]
|
if v, ok := header[xhttp.MinIOSourceProxyRequest]; ok {
|
||||||
_, opts.ReplicationRequest = header[xhttp.MinIOSourceReplicationRequest]
|
opts.ProxyHeaderSet = true
|
||||||
|
opts.ProxyRequest = strings.Join(v, "") == "true"
|
||||||
|
}
|
||||||
|
if _, ok := header[xhttp.MinIOSourceReplicationRequest]; ok {
|
||||||
|
opts.ReplicationRequest = true
|
||||||
|
}
|
||||||
opts.Speedtest = header.Get(globalObjectPerfUserMetadata) != ""
|
opts.Speedtest = header.Get(globalObjectPerfUserMetadata) != ""
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user