mirror of
https://github.com/nextcloud/server.git
synced 2026-06-10 17:23:59 -04:00
Merge pull request #59270 from nextcloud/ensureValueOneParallel
fix(chunkedUploads): Ensure max parallel count is at least 1
This commit is contained in:
commit
04ee3aff1a
3 changed files with 52 additions and 2 deletions
|
|
@ -25,6 +25,6 @@ class ChunkedUploadConfig {
|
|||
}
|
||||
|
||||
public static function getMaxParallelCount(): int {
|
||||
return Server::get(IConfig::class)->getSystemValueInt(self::KEY_MAX_PARALLEL_COUNT, 5);
|
||||
return max(1, Server::get(IConfig::class)->getSystemValueInt(self::KEY_MAX_PARALLEL_COUNT, 5));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
50
apps/files/tests/Service/ChunkedUploadConfigTest.php
Normal file
50
apps/files/tests/Service/ChunkedUploadConfigTest.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
namespace OCA\Files\Tests\Service;
|
||||
|
||||
use OCA\Files\Service\ChunkedUploadConfig;
|
||||
use OCP\IConfig;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Test\TestCase;
|
||||
|
||||
class ChunkedUploadConfigTest extends TestCase {
|
||||
private IConfig&MockObject $config;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->overwriteService(IConfig::class, $this->config);
|
||||
}
|
||||
|
||||
protected function tearDown(): void {
|
||||
$this->restoreAllServices();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public static function dataGetMaxParallelCount(): array {
|
||||
return [
|
||||
'configured positive value' => [3, 3],
|
||||
'boundary minimum' => [1, 1],
|
||||
'zero becomes one' => [0, 1],
|
||||
'negative becomes one' => [-2, 1],
|
||||
'large value passes through' => [100, 100],
|
||||
];
|
||||
}
|
||||
|
||||
#[DataProvider('dataGetMaxParallelCount')]
|
||||
public function testGetMaxParallelCount(int $configuredValue, int $expectedValue): void {
|
||||
$this->config->expects($this->once())
|
||||
->method('getSystemValueInt')
|
||||
->with('files.chunked_upload.max_parallel_count', 5)
|
||||
->willReturn($configuredValue);
|
||||
|
||||
$this->assertSame($expectedValue, ChunkedUploadConfig::getMaxParallelCount());
|
||||
}
|
||||
}
|
||||
|
|
@ -2916,7 +2916,7 @@ $CONFIG = [
|
|||
/**
|
||||
* Maximum number of chunks uploaded in parallel during chunked uploads. Higher
|
||||
* counts increase throughput but consume more server resources, with diminishing
|
||||
* returns.
|
||||
* returns. Value must be a positive integer.
|
||||
*
|
||||
* Defaults to ``5``
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in a new issue