Skip to content

Commit 866fd95

Browse files
committed
fix: chunk storage ids when preload storage info
Signed-off-by: Robin Appelman <robin@icewind.nl>
1 parent dfa407c commit 866fd95

1 file changed

Lines changed: 16 additions & 14 deletions

File tree

lib/private/Files/Cache/StorageGlobal.php

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,23 @@ public function loadForStorageIds(array $storageIds): void {
4141
$builder = $this->connection->getQueryBuilder();
4242
$query = $builder->select(['id', 'numeric_id', 'available', 'last_checked'])
4343
->from('storages')
44-
->where($builder->expr()->in('id', $builder->createNamedParameter(array_values($storageIds), IQueryBuilder::PARAM_STR_ARRAY)));
45-
46-
$result = $query->executeQuery();
47-
while (($row = $result->fetch()) !== false) {
48-
$normalizedRow = [
49-
'id' => (string)$row['id'],
50-
'numeric_id' => (int)$row['numeric_id'],
51-
'available' => (bool)$row['available'],
52-
'last_checked' => (int)$row['last_checked'],
53-
];
54-
55-
$this->cache[$normalizedRow['id']] = $normalizedRow;
56-
}
44+
->where($builder->expr()->in('id', $builder->createParameter('ids'), IQueryBuilder::PARAM_STR_ARRAY));
45+
46+
foreach(array_chunk($storageIds, 1000) as $chunk) {
47+
$query->setParameter('ids', $chunk, IQueryBuilder::PARAM_STR_ARRAY);
5748

58-
$result->closeCursor();
49+
$result = $query->executeQuery();
50+
while (($row = $result->fetch()) !== false) {
51+
$normalizedRow = [
52+
'id' => (string)$row['id'],
53+
'numeric_id' => (int)$row['numeric_id'],
54+
'available' => (bool)$row['available'],
55+
'last_checked' => (int)$row['last_checked'],
56+
];
57+
58+
$this->cache[$normalizedRow['id']] = $normalizedRow;
59+
}
60+
}
5961
}
6062

6163
/**

0 commit comments

Comments
 (0)