fix: chunk storage ids when preload storage info

Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
Robin Appelman 2026-04-24 17:57:44 +02:00
parent 829236fc32
commit 6a316b23b5

View file

@ -42,21 +42,23 @@ class StorageGlobal {
$builder = $this->connection->getQueryBuilder();
$query = $builder->select(['id', 'numeric_id', 'available', 'last_checked'])
->from('storages')
->where($builder->expr()->in('id', $builder->createNamedParameter(array_values($storageIds), IQueryBuilder::PARAM_STR_ARRAY)));
->where($builder->expr()->in('id', $builder->createParameter('ids'), IQueryBuilder::PARAM_STR_ARRAY));
$result = $query->executeQuery();
while (($row = $result->fetch()) !== false) {
$normalizedRow = [
'id' => (string)$row['id'],
'numeric_id' => (int)$row['numeric_id'],
'available' => (bool)$row['available'],
'last_checked' => (int)$row['last_checked'],
];
foreach (array_chunk($storageIds, 1000) as $chunk) {
$query->setParameter('ids', $chunk, IQueryBuilder::PARAM_STR_ARRAY);
$this->cache[$normalizedRow['id']] = $normalizedRow;
$result = $query->executeQuery();
while (($row = $result->fetch()) !== false) {
$normalizedRow = [
'id' => (string)$row['id'],
'numeric_id' => (int)$row['numeric_id'],
'available' => (bool)$row['available'],
'last_checked' => (int)$row['last_checked'],
];
$this->cache[$normalizedRow['id']] = $normalizedRow;
}
}
$result->closeCursor();
}
/**