mirror of
https://github.com/minio/minio.git
synced 2025-11-21 02:09:08 -05:00
fix: delete-marker replication check properly (#15923)
This commit is contained in:
@@ -739,14 +739,15 @@ func (api objectAPIHandlers) headObjectHandler(ctx context.Context, objectAPI Ob
|
||||
w.Header()[xhttp.AmzDeleteMarker] = []string{strconv.FormatBool(objInfo.DeleteMarker)}
|
||||
}
|
||||
QueueReplicationHeal(ctx, bucket, objInfo)
|
||||
}
|
||||
// do an additional verification whether object exists when opts.DeleteMarker is set by source
|
||||
// cluster as part of delete marker replication
|
||||
if opts.DeleteMarker && opts.ProxyHeaderSet {
|
||||
opts.VersionID = ""
|
||||
goi, gerr := getObjectInfo(ctx, bucket, object, opts)
|
||||
if gerr == nil || goi.VersionID != "" { // object layer returned more info because object is deleted
|
||||
w.Header().Set(xhttp.MinIOTargetReplicationReady, "true")
|
||||
// do an additional verification whether object exists when object is deletemarker and request
|
||||
// is from replication
|
||||
if opts.CheckDMReplicationReady {
|
||||
topts := opts
|
||||
topts.VersionID = ""
|
||||
goi, gerr := getObjectInfo(ctx, bucket, object, topts)
|
||||
if gerr == nil || goi.VersionID != "" { // object layer returned more info because object is deleted
|
||||
w.Header().Set(xhttp.MinIOTargetReplicationReady, "true")
|
||||
}
|
||||
}
|
||||
}
|
||||
writeErrorResponseHeadersOnly(w, toAPIError(ctx, err))
|
||||
|
||||
Reference in New Issue
Block a user