From 7d38a81567236bf810e4eba3fd927841ffaec65e Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 2 Mar 2026 20:26:06 -0500 Subject: [PATCH 1/3] refactor(Storage/S3): improve clarity of opendir() Signed-off-by: Josh --- apps/files_external/lib/Lib/Storage/AmazonS3.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/files_external/lib/Lib/Storage/AmazonS3.php b/apps/files_external/lib/Lib/Storage/AmazonS3.php index fdcbf33627e17..1c2af37de9605 100644 --- a/apps/files_external/lib/Lib/Storage/AmazonS3.php +++ b/apps/files_external/lib/Lib/Storage/AmazonS3.php @@ -294,10 +294,11 @@ private function batchDelete(?string $path = null): bool { public function opendir(string $path) { try { - $content = iterator_to_array($this->getDirectoryContent($path)); - return IteratorDirectory::wrap(array_map(function (array $item) { + $content = $this->getDirectoryContent($path); + $names = array_map(function (array $item) { return $item['name']; - }, $content)); + }, iterator_to_array($content)); + return IteratorDirectory::wrap($names); } catch (S3Exception $e) { return false; } From 518c3c8cbaf993b053b1fedefab91fac53e4614c Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 2 Mar 2026 21:28:57 -0500 Subject: [PATCH 2/3] perf(files_external/S3): slightly optimize memory in opendir Signed-off-by: Josh --- apps/files_external/lib/Lib/Storage/AmazonS3.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/files_external/lib/Lib/Storage/AmazonS3.php b/apps/files_external/lib/Lib/Storage/AmazonS3.php index 1c2af37de9605..927a78ea13aa2 100644 --- a/apps/files_external/lib/Lib/Storage/AmazonS3.php +++ b/apps/files_external/lib/Lib/Storage/AmazonS3.php @@ -294,10 +294,12 @@ private function batchDelete(?string $path = null): bool { public function opendir(string $path) { try { - $content = $this->getDirectoryContent($path); - $names = array_map(function (array $item) { - return $item['name']; - }, iterator_to_array($content)); + $names = []; + foreach ($this->getDirectoryContent($path) as $item) { + if (isset($item['name'])) { + $names[] = $item['name']; + } + } return IteratorDirectory::wrap($names); } catch (S3Exception $e) { return false; From bd6cb664210437deb091b646322f70249c5eb02c Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 2 Mar 2026 21:41:55 -0500 Subject: [PATCH 3/3] chore(files_external/s3): add logging to opendir S3Exceptions Signed-off-by: Josh --- apps/files_external/lib/Lib/Storage/AmazonS3.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/files_external/lib/Lib/Storage/AmazonS3.php b/apps/files_external/lib/Lib/Storage/AmazonS3.php index 927a78ea13aa2..7b45aac1831b0 100644 --- a/apps/files_external/lib/Lib/Storage/AmazonS3.php +++ b/apps/files_external/lib/Lib/Storage/AmazonS3.php @@ -302,6 +302,10 @@ public function opendir(string $path) { } return IteratorDirectory::wrap($names); } catch (S3Exception $e) { + $this->logger->error($e->getMessage(), [ + 'app' => 'files_external', + 'exception' => $e, + ]); return false; } }