mirror of
https://github.com/minio/minio.git
synced 2025-01-11 15:03:22 -05:00
fix: objects matching prefixes should not leave delete markers (#15586)
This is needed to ensure that we do not leave prefixes where version is suspended, instead we never leave versions on these paths.
This commit is contained in:
parent
b737c83a66
commit
edba7c987b
@ -197,7 +197,7 @@ func mustReplicate(ctx context.Context, bucket, object string, mopts mustReplica
|
|||||||
|
|
||||||
// Disable server-side replication on object prefixes which are excluded
|
// Disable server-side replication on object prefixes which are excluded
|
||||||
// from versioning via the MinIO bucket versioning extension.
|
// from versioning via the MinIO bucket versioning extension.
|
||||||
if globalBucketVersioningSys.PrefixSuspended(bucket, object) {
|
if !globalBucketVersioningSys.PrefixEnabled(bucket, object) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -490,7 +490,11 @@ func replicateDelete(ctx context.Context, dobj DeletedObjectReplicationInfo, obj
|
|||||||
MTime: dobj.DeleteMarkerMTime.Time,
|
MTime: dobj.DeleteMarkerMTime.Time,
|
||||||
DeleteReplication: drs,
|
DeleteReplication: drs,
|
||||||
Versioned: globalBucketVersioningSys.PrefixEnabled(bucket, dobj.ObjectName),
|
Versioned: globalBucketVersioningSys.PrefixEnabled(bucket, dobj.ObjectName),
|
||||||
VersionSuspended: globalBucketVersioningSys.PrefixSuspended(bucket, dobj.ObjectName),
|
// Objects matching prefixes should not leave delete markers,
|
||||||
|
// dramatically reduces namespace pollution while keeping the
|
||||||
|
// benefits of replication, make sure to apply version suspension
|
||||||
|
// only at bucket level instead.
|
||||||
|
VersionSuspended: globalBucketVersioningSys.Suspended(bucket),
|
||||||
})
|
})
|
||||||
if err != nil && !isErrVersionNotFound(err) { // VersionNotFound would be reported by pool that object version is missing on.
|
if err != nil && !isErrVersionNotFound(err) { // VersionNotFound would be reported by pool that object version is missing on.
|
||||||
logger.LogIf(ctx, fmt.Errorf("Unable to update replication metadata for %s/%s(%s): %s", bucket, dobj.ObjectName, versionID, err))
|
logger.LogIf(ctx, fmt.Errorf("Unable to update replication metadata for %s/%s(%s): %s", bucket, dobj.ObjectName, versionID, err))
|
||||||
|
@ -169,7 +169,11 @@ func delOpts(ctx context.Context, r *http.Request, bucket, object string) (opts
|
|||||||
return opts, err
|
return opts, err
|
||||||
}
|
}
|
||||||
opts.Versioned = globalBucketVersioningSys.PrefixEnabled(bucket, object)
|
opts.Versioned = globalBucketVersioningSys.PrefixEnabled(bucket, object)
|
||||||
opts.VersionSuspended = globalBucketVersioningSys.PrefixSuspended(bucket, object)
|
// Objects matching prefixes should not leave delete markers,
|
||||||
|
// dramatically reduces namespace pollution while keeping the
|
||||||
|
// benefits of replication, make sure to apply version suspension
|
||||||
|
// only at bucket level instead.
|
||||||
|
opts.VersionSuspended = globalBucketVersioningSys.Suspended(bucket)
|
||||||
delMarker := strings.TrimSpace(r.Header.Get(xhttp.MinIOSourceDeleteMarker))
|
delMarker := strings.TrimSpace(r.Header.Get(xhttp.MinIOSourceDeleteMarker))
|
||||||
if delMarker != "" {
|
if delMarker != "" {
|
||||||
switch delMarker {
|
switch delMarker {
|
||||||
|
Loading…
Reference in New Issue
Block a user