[
https://issues.apache.org/jira/browse/HDDS-17308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gargi Jaiswal resolved HDDS-17308.
----------------------------------
Resolution: Fixed
> ListObjectsV2 Incorrectly Filters CommonPrefixes When StartAfter Is Before
> the Matching Prefixes
> ------------------------------------------------------------------------------------------------
>
> Key: HDDS-17308
> URL: https://issues.apache.org/jira/browse/HDDS-17308
> Project: Apache Ozone
> Issue Type: Bug
> Components: S3
> Reporter: Bablu Raul
> Assignee: Gargi Jaiswal
> Priority: Minor
> Labels: pull-request-available
>
> When the S3 {{ListObjectsV2}} API is called with the {{{}Prefix{}}},
> {{{}Delimiter{}}}, and {{StartAfter}} parameters, the Ozone S3 Gateway
> incorrectly excludes matching common prefixes that sort lexicographically
> after the specified {{StartAfter}} value.
> For example, the bucket contains the following object keys:
> * {{dir1bh/file1}}
> * {{dir1bha/file1}}
> A request with {{Prefix=dir1bh}} and {{Delimiter=/}} correctly returns the
> common prefixes {{dir1bh/}} and {{{}dir1bha/{}}}.
> However, when the same request includes {{{}StartAfter=dir1/dir2/file1{}}},
> neither common prefix is returned, even though both sort lexicographically
> after the specified value.
> h2. Steps to Reproduce
> Configure and start the Ozone S3 Gateway.
> Ensure that the bucket contains the following objects:
> *
> ** {{dir1bh/file1}}
> *
> ** {{dir1bha/file1}}
> Execute {{ListObjectsV2}} with the prefix:
>
> {code:java}
> {{aws s3api list-objects-v2 \
> --bucket "$BUCKET" \
> --prefix dir1bh}}
>
> {code}
> Both matching object keys are returned.
> Execute {{ListObjectsV2}} with the prefix and delimiter:
>
> {code:java}
> {{aws s3api list-objects-v2 \
> --bucket "$BUCKET" \
> --prefix dir1bh \
> --delimiter /}}{code}
>
> The response contains both common prefixes:
>
> {code:java}
> {{
> { "CommonPrefixes": [ \{"Prefix": "dir1bh/"}
> ,
> {"Prefix": "dir1bha/"}
> ],
> "Prefix": "dir1bh"
> }}}
> {code}
>
> Add the {{StartAfter}} parameter:
>
> {code:java}
> {{aws s3api list-objects-v2 \
> --bucket "$BUCKET" \
> --prefix dir1bh \
> --delimiter / \
> --start-after 'dir1/dir2/file1'}}
> {code}
> h2. Actual Result
> The response does not contain the {{CommonPrefixes}} field, and neither
> {{dir1bh/}} nor {{dir1bha/}} is returned.
> h2. Expected Result
> The response should include both {{dir1bh/}} and {{{}dir1bha/{}}}, because
> both common prefixes sort lexicographically after the specified
> {{StartAfter}} value.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]