forked from TrueCloudLab/rclone
operations: Don't use multi-thread copy if the backend doesn't support it #6915
This commit is contained in:
parent
72be80ddca
commit
46a323ae14
2 changed files with 10 additions and 1 deletions
|
@ -28,11 +28,15 @@ func doMultiThreadCopy(ctx context.Context, f fs.Fs, src fs.Object) bool {
|
||||||
if ci.MultiThreadStreams <= 1 {
|
if ci.MultiThreadStreams <= 1 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
// ...if the source doesn't support it
|
||||||
|
if src.Fs().Features().NoMultiThreading {
|
||||||
|
return false
|
||||||
|
}
|
||||||
// ...size of object is less than cutoff
|
// ...size of object is less than cutoff
|
||||||
if src.Size() < int64(ci.MultiThreadCutoff) {
|
if src.Size() < int64(ci.MultiThreadCutoff) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
// ...source doesn't support it
|
// ...destination doesn't support it
|
||||||
dstFeatures := f.Features()
|
dstFeatures := f.Features()
|
||||||
if dstFeatures.OpenWriterAt == nil {
|
if dstFeatures.OpenWriterAt == nil {
|
||||||
return false
|
return false
|
||||||
|
|
|
@ -79,6 +79,11 @@ func TestDoMultiThreadCopy(t *testing.T) {
|
||||||
assert.True(t, doMultiThreadCopy(ctx, f, src))
|
assert.True(t, doMultiThreadCopy(ctx, f, src))
|
||||||
srcFs.Features().IsLocal = false
|
srcFs.Features().IsLocal = false
|
||||||
assert.True(t, doMultiThreadCopy(ctx, f, src))
|
assert.True(t, doMultiThreadCopy(ctx, f, src))
|
||||||
|
|
||||||
|
srcFs.Features().NoMultiThreading = true
|
||||||
|
assert.False(t, doMultiThreadCopy(ctx, f, src))
|
||||||
|
srcFs.Features().NoMultiThreading = false
|
||||||
|
assert.True(t, doMultiThreadCopy(ctx, f, src))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMultithreadCalculateChunks(t *testing.T) {
|
func TestMultithreadCalculateChunks(t *testing.T) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue