From 7848dfb294dfab30e9994a38184a5c7d298e11d4 Mon Sep 17 00:00:00 2001 From: Kostiantyn Miakshyn Date: Sun, 7 Dec 2025 22:59:42 +0100 Subject: [PATCH] fix: Allow `num_buckets` to be equal as `min_bucket` Signed-off-by: Kostiantyn Miakshyn --- lib/private/Files/ObjectStore/Mapper.php | 4 ++++ tests/lib/Files/ObjectStore/MapperTest.php | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/private/Files/ObjectStore/Mapper.php b/lib/private/Files/ObjectStore/Mapper.php index f62a1576caa..a8f0a58e4e0 100644 --- a/lib/private/Files/ObjectStore/Mapper.php +++ b/lib/private/Files/ObjectStore/Mapper.php @@ -30,6 +30,10 @@ class Mapper { ? (int)$this->config['arguments']['min_bucket'] : 0; + if ($minBucket === $numBuckets) { + return (string)$minBucket; + } + $hash = md5($this->user->getUID()); $num = hexdec(substr($hash, 0, 4)); return (string)(($num % ($numBuckets - $minBucket)) + $minBucket); diff --git a/tests/lib/Files/ObjectStore/MapperTest.php b/tests/lib/Files/ObjectStore/MapperTest.php index c3c73e0e7b5..1726b0d01fc 100644 --- a/tests/lib/Files/ObjectStore/MapperTest.php +++ b/tests/lib/Files/ObjectStore/MapperTest.php @@ -24,6 +24,7 @@ class MapperTest extends \Test\TestCase { public static function dataGetBucket(): array { return [ ['user', 64, 0, '17'], + ['user', 64, 64, '64'], ['USER', 64, 0, '0'], ['bc0e8b52-a66c-1035-90c6-d9663bda9e3f', 64, 0, '56'], ['user', 8, 0, '1'], @@ -41,8 +42,7 @@ class MapperTest extends \Test\TestCase { #[\PHPUnit\Framework\Attributes\DataProvider('dataGetBucket')] public function testGetBucket($username, $numBuckets, $bucketShift, $expectedBucket): void { $mapper = new Mapper($this->user, ['arguments' => ['min_bucket' => $bucketShift]]); - $this->user->expects($this->once()) - ->method('getUID') + $this->user->method('getUID') ->willReturn($username); $result = $mapper->getBucket($numBuckets);