[
https://issues.apache.org/jira/browse/HDDS-17308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bablu Raul updated HDDS-17308:
------------------------------
Description:
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.
was:
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:
{{aws s3api list-objects-v2 \
--bucket "$BUCKET" \
--prefix dir1bh}}
Both matching object keys are returned.
# Execute {{ListObjectsV2}} with the prefix and delimiter:
{{aws s3api list-objects-v2 \
--bucket "$BUCKET" \
--prefix dir1bh \
--delimiter /}}
The response contains both common prefixes:
{{{
"CommonPrefixes": [
\{"Prefix": "dir1bh/"},
\{"Prefix": "dir1bha/"}
],
"Prefix": "dir1bh"
}}}
# Add the {{StartAfter}} parameter:
{{aws s3api list-objects-v2 \
--bucket "$BUCKET" \
--prefix dir1bh \
--delimiter / \
--start-after 'dir1/dir2/file1'}}
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.
> 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
> Priority: Major
>
> 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]