[
https://issues.apache.org/jira/browse/HDDS-15950?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Priyesh Karatha updated HDDS-15950:
-----------------------------------
Description:
{{`S3LifecycleConfiguration.convertFromOzoneExpiration()`}} calls
{{o`zoneExpiration.getDays() > 0`}} (line 482). However,
`{{{}OzoneLifecycleConfiguration.OzoneLCExpiration.getDays()`{}}} returns a
nullable {{{}Integer{}}}. If a lifecycle rule is stored with a {*}Date{*}-based
expiration (without a {{Days}} field), {{getDays()}} returns {{{}null{}}}. The
comparison triggers auto-unboxing of the {{{}Integer{}}}, resulting in a
{{{}NullPointerException{}}}, which propagates to the client as an HTTP 500
response.
The same issue exists in
`{{{}convertFromOzoneAbortIncompleteMultipartUpload()`{}}} (line 500), where
`{{{}getDaysAfterInitiation()`{}}} also returns a nullable {{Integer}} and is
compared without a null check.
There are currently no tests covering the GET lifecycle path for rules that use
{*}Date{*}-based expiration, allowing this regression to go undetected.
was:
{{S3LifecycleConfiguration.convertFromOzoneExpiration()}} calls
{{ozoneExpiration.getDays() > 0}} (line 482). However,
{{OzoneLifecycleConfiguration.OzoneLCExpiration.getDays()}} returns a nullable
{{{}Integer{}}}. If a lifecycle rule is stored with a {*}Date{*}-based
expiration (without a {{Days}} field), {{getDays()}} returns {{{}null{}}}. The
comparison triggers auto-unboxing of the {{{}Integer{}}}, resulting in a
{{{}NullPointerException{}}}, which propagates to the client as an HTTP 500
response.
The same issue exists in {{convertFromOzoneAbortIncompleteMultipartUpload()}}
(line 500), where {{getDaysAfterInitiation()}} also returns a nullable
{{Integer}} and is compared without a null check.
There are currently no tests covering the GET lifecycle path for rules that use
{*}Date{*}-based expiration, allowing this regression to go undetected.
> S3 Gateway GetBucketLifecycleConfiguration throws NullPointerException when
> expiration uses Date or DaysAfterInitiation is absent
> ---------------------------------------------------------------------------------------------------------------------------------
>
> Key: HDDS-15950
> URL: https://issues.apache.org/jira/browse/HDDS-15950
> Project: Apache Ozone
> Issue Type: Sub-task
> Components: S3
> Reporter: Priyesh Karatha
> Assignee: Priyesh Karatha
> Priority: Major
>
> {{`S3LifecycleConfiguration.convertFromOzoneExpiration()`}} calls
> {{o`zoneExpiration.getDays() > 0`}} (line 482). However,
> `{{{}OzoneLifecycleConfiguration.OzoneLCExpiration.getDays()`{}}} returns a
> nullable {{{}Integer{}}}. If a lifecycle rule is stored with a
> {*}Date{*}-based expiration (without a {{Days}} field), {{getDays()}} returns
> {{{}null{}}}. The comparison triggers auto-unboxing of the {{{}Integer{}}},
> resulting in a {{{}NullPointerException{}}}, which propagates to the client
> as an HTTP 500 response.
> The same issue exists in
> `{{{}convertFromOzoneAbortIncompleteMultipartUpload()`{}}} (line 500), where
> `{{{}getDaysAfterInitiation()`{}}} also returns a nullable {{Integer}} and is
> compared without a null check.
> There are currently no tests covering the GET lifecycle path for rules that
> use {*}Date{*}-based expiration, allowing this regression to go undetected.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]