mirror of
https://github.com/minio/minio.git
synced 2025-02-25 04:19:13 -05:00
fix: batch replication pull must preserve versionID (#17805)
batch replication pull must preserve versionID regardless of destination bucket versioning configuration. This is similar to the issue with decommissioning and rebalancing
This commit is contained in:
parent
cb089dcb52
commit
533cd8d6df
@ -319,17 +319,17 @@ func (r *BatchJobReplicateV1) ReplicateFromSource(ctx context.Context, api Objec
|
|||||||
tgtObject = path.Join(r.Target.Prefix, srcObjInfo.Name)
|
tgtObject = path.Join(r.Target.Prefix, srcObjInfo.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
versioned := globalBucketVersioningSys.PrefixEnabled(tgtBucket, tgtObject)
|
|
||||||
versionSuspended := globalBucketVersioningSys.PrefixSuspended(tgtBucket, tgtObject)
|
|
||||||
versionID := srcObjInfo.VersionID
|
versionID := srcObjInfo.VersionID
|
||||||
if r.Target.Type == BatchJobReplicateResourceS3 || r.Source.Type == BatchJobReplicateResourceS3 {
|
if r.Target.Type == BatchJobReplicateResourceS3 || r.Source.Type == BatchJobReplicateResourceS3 {
|
||||||
versionID = ""
|
versionID = ""
|
||||||
}
|
}
|
||||||
if srcObjInfo.DeleteMarker {
|
if srcObjInfo.DeleteMarker {
|
||||||
_, err := api.DeleteObject(ctx, tgtBucket, tgtObject, ObjectOptions{
|
_, err := api.DeleteObject(ctx, tgtBucket, tgtObject, ObjectOptions{
|
||||||
VersionID: versionID,
|
VersionID: versionID,
|
||||||
VersionSuspended: versionSuspended,
|
// Since we are preserving a delete marker, we have to make sure this is always true.
|
||||||
Versioned: versioned,
|
// regardless of the current configuration of the bucket we must preserve all versions
|
||||||
|
// on the pool being batch replicated from source.
|
||||||
|
Versioned: true,
|
||||||
MTime: srcObjInfo.ModTime,
|
MTime: srcObjInfo.ModTime,
|
||||||
DeleteMarker: srcObjInfo.DeleteMarker,
|
DeleteMarker: srcObjInfo.DeleteMarker,
|
||||||
ReplicationRequest: true,
|
ReplicationRequest: true,
|
||||||
@ -338,12 +338,10 @@ func (r *BatchJobReplicateV1) ReplicateFromSource(ctx context.Context, api Objec
|
|||||||
}
|
}
|
||||||
|
|
||||||
opts := ObjectOptions{
|
opts := ObjectOptions{
|
||||||
VersionID: srcObjInfo.VersionID,
|
VersionID: srcObjInfo.VersionID,
|
||||||
Versioned: versioned,
|
MTime: srcObjInfo.ModTime,
|
||||||
VersionSuspended: versionSuspended,
|
PreserveETag: srcObjInfo.ETag,
|
||||||
MTime: srcObjInfo.ModTime,
|
UserDefined: srcObjInfo.UserDefined,
|
||||||
PreserveETag: srcObjInfo.ETag,
|
|
||||||
UserDefined: srcObjInfo.UserDefined,
|
|
||||||
}
|
}
|
||||||
if r.Target.Type == BatchJobReplicateResourceS3 || r.Source.Type == BatchJobReplicateResourceS3 {
|
if r.Target.Type == BatchJobReplicateResourceS3 || r.Source.Type == BatchJobReplicateResourceS3 {
|
||||||
opts.VersionID = ""
|
opts.VersionID = ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user