mirror of
https://github.com/minio/minio.git
synced 2024-12-24 06:05:55 -05:00
CopyObject: fix read/write err on closed pipe (#15135)
Fixes: #15128 Regression from PR#14971
This commit is contained in:
parent
1cfb03fb74
commit
cb097e6b0a
@ -1047,11 +1047,13 @@ func (s *erasureSets) CopyObject(ctx context.Context, srcBucket, srcObject, dstB
|
|||||||
// Version ID is set for the destination and source == destination version ID.
|
// Version ID is set for the destination and source == destination version ID.
|
||||||
// perform an in-place update.
|
// perform an in-place update.
|
||||||
if dstOpts.VersionID != "" && srcOpts.VersionID == dstOpts.VersionID {
|
if dstOpts.VersionID != "" && srcOpts.VersionID == dstOpts.VersionID {
|
||||||
|
srcInfo.Reader.Close() // We are not interested in the reader stream at this point close it.
|
||||||
return srcSet.CopyObject(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
|
return srcSet.CopyObject(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
|
||||||
}
|
}
|
||||||
// Destination is not versioned and source version ID is empty
|
// Destination is not versioned and source version ID is empty
|
||||||
// perform an in-place update.
|
// perform an in-place update.
|
||||||
if !dstOpts.Versioned && srcOpts.VersionID == "" {
|
if !dstOpts.Versioned && srcOpts.VersionID == "" {
|
||||||
|
srcInfo.Reader.Close() // We are not interested in the reader stream at this point close it.
|
||||||
return srcSet.CopyObject(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
|
return srcSet.CopyObject(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
|
||||||
}
|
}
|
||||||
// CopyObject optimization where we don't create an entire copy
|
// CopyObject optimization where we don't create an entire copy
|
||||||
@ -1060,6 +1062,7 @@ func (s *erasureSets) CopyObject(ctx context.Context, srcBucket, srcObject, dstB
|
|||||||
// that we actually create a new dataDir for legacy objects.
|
// that we actually create a new dataDir for legacy objects.
|
||||||
if dstOpts.Versioned && srcOpts.VersionID != dstOpts.VersionID && !srcInfo.Legacy {
|
if dstOpts.Versioned && srcOpts.VersionID != dstOpts.VersionID && !srcInfo.Legacy {
|
||||||
srcInfo.versionOnly = true
|
srcInfo.versionOnly = true
|
||||||
|
srcInfo.Reader.Close() // We are not interested in the reader stream at this point close it.
|
||||||
return srcSet.CopyObject(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
|
return srcSet.CopyObject(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1433,10 +1433,6 @@ func (api objectAPIHandlers) CopyObjectHandler(w http.ResponseWriter, r *http.Re
|
|||||||
srcInfo.metadataOnly = false
|
srcInfo.metadataOnly = false
|
||||||
}
|
}
|
||||||
|
|
||||||
if srcInfo.metadataOnly {
|
|
||||||
gr.Close() // We are not interested in the reader stream at this point close it.
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if x-amz-metadata-directive or x-amz-tagging-directive was not set to REPLACE and source,
|
// Check if x-amz-metadata-directive or x-amz-tagging-directive was not set to REPLACE and source,
|
||||||
// destination are same objects. Apply this restriction also when
|
// destination are same objects. Apply this restriction also when
|
||||||
// metadataOnly is true indicating that we are not overwriting the object.
|
// metadataOnly is true indicating that we are not overwriting the object.
|
||||||
|
Loading…
Reference in New Issue
Block a user