* fix(s3): include directory markers in ListObjects without delimiter (#8698)
Directory key objects (zero-byte objects with keys ending in "/") created
via PutObject were omitted from ListObjects/ListObjectsV2 results when no
delimiter was specified. AWS S3 includes these as regular keys in Contents.
The issue was in doListFilerEntries: when recursing into directories in
non-delimiter mode, directory key objects were only emitted when
prefixEndsOnDelimiter was true. Added an else branch to emit them in the
general recursive case as well.
* remove issue reference from inline comment
* test: add child-under-marker and paginated listing coverage
Extend test 6 to place a child object under the directory marker
and paginate with MaxKeys=1 so the emit-then-recurse truncation
path is exercised.
* fix(test): skip directory markers in Spark temporary artifacts check
The listing check now correctly shows directory markers (keys ending
in "/") after the ListObjects fix. These 0-byte metadata objects are
not data artifacts — filter them from the listing check since the
HeadObject-based check already verifies their cleanup with a timeout.
* Fix Spark _temporary cleanup and add issue #8285 regression test
* Generalize empty folder cleanup for Spark temp artifacts
* Revert synchronous folder pruning and add cleanup diagnostics
* Add actionable empty-folder cleanup diagnostics
* Fix Spark temp marker cleanup in async folder cleaner
* Fix Spark temp cleanup with implicit directory markers
* Keep explicit directory markers non-implicit
* logging
* more logs
* Switch empty-folder cleanup to bucket policy
* Seaweed-X-Amz-Allow-Empty-Folders
* less logs
* go vet
* less logs
* refactoring
2026-02-10 18:38:38 -08:00
Chris LuGitHubgemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>