Huang Kuan Hao created HDDS-17413:
-------------------------------------
Summary: FSO key listing skips other matching directories when the
prefix is an existing directory
Key: HDDS-17413
URL: https://issues.apache.org/jira/browse/HDDS-17413
Project: Apache Ozone
Issue Type: Bug
Components: Ozone Manager, S3
Reporter: Huang Kuan Hao
In an FSO bucket, a non-shallow key listing whose prefix is also an existing
directory returns only that directory, and misses other directories that match
the prefix.
Reproduced on master at 1f9f4cc791.
h3. Reproduction
Create keys {{dir1bh/file1}} and {{dir1bha/file1}}, then list keys with prefix
{{dir1bh}}:
{noformat}
OzoneBucket#listKeys("dir1bh", "", false)
LEGACY: dir1bh/, dir1bh/file1, dir1bha/, dir1bha/file1
FSO: dir1bh/, dir1bh/file1
{noformat}
S3 ListObjects and ListObjectsV2 without a delimiter use this listing, so on an
FSO bucket {{list-objects-v2 --prefix dir1bh}} misses {{dir1bha/file1}}.
Shallow listing ({{delimiter=/}}) returns {{dir1bh/}} and {{dir1bha/}} for both
layouts.
h3. Cause
KeyIteratorWithFSO#getChildrenKeys calls listStatusLight with the prefix as
keyName and allowPartialPrefixes=true. When the keyName resolves to a
directory, OzoneListStatusHelper#listStatusFSO lists only that directory's
children. The partial-prefix handling from HDDS-9065 covers only missing keys
and files, so {{dir1bha/}} is never visited.
h3. Context
* Found while reviewing [HDDS-17308 / PR
#11715|https://github.com/apache/ozone/pull/11715]. Its FSO tests compare
against the listing without StartAfter because of this.
* Not related to StartAfter.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]