[ 
https://issues.apache.org/jira/browse/HDDS-15259?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gargi Jaiswal updated HDDS-15259:
---------------------------------
    Description: 
[S3 Test suit 
failing|https://ozone.s3.peterxcli.dev/?q=test_put_obj_with_tags&run=2026-05-17T05-56-28Z&caseSuite=s3_tests&test=test_put_obj_with_tags#search-section]
This JIRA addresses issues in the *object tagging* implementation:

*Null Tag Value Support for x-amz-tagging-header:* The S3 Gateway validator 
currently rejects x-amz-tagging on put object tags with a null value string 
(e.g., {{{}Key=TagA, Value{}}}) with an {{InvalidTag}} error. AWS S3 permits 
null tag value to be considered as empty string values. This causes 
{color:#de350b}{{test_put_obj_with_tags}}{color} to fail.
While a normal put-object-tagging is correctly rejecting null tag value.
{code:java}
// wrong behaviour
// put object with x-amz-tagging header with null tag value should be treated 
as an empty value.

bash-5.1$ aws s3api put-object   --bucket buck1   --key key1  --tagging 'tag1'  
 --endpoint-url  http://s3g:9878
An error occurred (InvalidTag) when calling the PutObject operation: Some tag 
values are not specified, please specify the tag values

// no tags applied which is wrong
bash-5.1$ aws s3api get-object-tagging   --bucket buck1   --key key1 
--endpoint-url  http://s3g:9878
{
    "TagSet": []
}{code}
*Proposed Fix:* 
Update *{{validateAndGetTagging()}}* in {{EndpointBase}} to allow values with 
zero length when x-amz-tagging header is present else on normal put object 
tagging this null tag value should fail, while maintaining the requirement that 
the Key must have at least one character.
After fix:
{code:java}
// put object with x-amz-tagging header succeded for null tag value
bash-5.1$ aws s3api put-object   --bucket buck1   --key key1  --tagging 'tag1'  
 --endpoint-url  http://s3g:9878
{
    "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\""
}
// confirming with get object tagging
bash-5.1$ aws s3api get-object-tagging   --bucket buck1   --key key1 
--endpoint-url  http://s3g:9878
{
    "TagSet": [
        {
            "Key": "tag1",
            "Value": ""
        }
    ]
} {code}

  was:
This JIRA addresses issues in the *object tagging* implementation:

*Null Tag Value Support for x-amz-tagging-header:* The S3 Gateway validator 
currently rejects x-amz-tagging on put object tags with a null value string 
(e.g., {{{}Key=TagA, Value{}}}) with an {{InvalidTag}} error. AWS S3 permits 
null tag value to be considered as empty string values. This causes 
{color:#de350b}{{test_put_obj_with_tags}}{color} to fail.
While a normal put-object-tagging is correctly rejecting null tag value.
{code:java}
// wrong behaviour
// put object with x-amz-tagging header with null tag value should be treated 
as an empty value.

bash-5.1$ aws s3api put-object   --bucket buck1   --key key1  --tagging 'tag1'  
 --endpoint-url  http://s3g:9878
An error occurred (InvalidTag) when calling the PutObject operation: Some tag 
values are not specified, please specify the tag values

// no tags applied which is wrong
bash-5.1$ aws s3api get-object-tagging   --bucket buck1   --key key1 
--endpoint-url  http://s3g:9878
{
    "TagSet": []
}{code}
*Proposed Fix:* 
Update *{{validateAndGetTagging()}}* in {{EndpointBase}} to allow values with 
zero length when x-amz-tagging header is present else on normal put object 
tagging this null tag value should fail, while maintaining the requirement that 
the Key must have at least one character.
After fix:
{code:java}
// put object with x-amz-tagging header succeded for null tag value
bash-5.1$ aws s3api put-object   --bucket buck1   --key key1  --tagging 'tag1'  
 --endpoint-url  http://s3g:9878
{
    "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\""
}
// confirming with get object tagging
bash-5.1$ aws s3api get-object-tagging   --bucket buck1   --key key1 
--endpoint-url  http://s3g:9878
{
    "TagSet": [
        {
            "Key": "tag1",
            "Value": ""
        }
    ]
} {code}


> PutObject should treat null tag value for x-amz-tagging header as empty tag 
> value
> ---------------------------------------------------------------------------------
>
>                 Key: HDDS-15259
>                 URL: https://issues.apache.org/jira/browse/HDDS-15259
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: Gargi Jaiswal
>            Assignee: Gargi Jaiswal
>            Priority: Major
>
> [S3 Test suit 
> failing|https://ozone.s3.peterxcli.dev/?q=test_put_obj_with_tags&run=2026-05-17T05-56-28Z&caseSuite=s3_tests&test=test_put_obj_with_tags#search-section]
> This JIRA addresses issues in the *object tagging* implementation:
> *Null Tag Value Support for x-amz-tagging-header:* The S3 Gateway validator 
> currently rejects x-amz-tagging on put object tags with a null value string 
> (e.g., {{{}Key=TagA, Value{}}}) with an {{InvalidTag}} error. AWS S3 permits 
> null tag value to be considered as empty string values. This causes 
> {color:#de350b}{{test_put_obj_with_tags}}{color} to fail.
> While a normal put-object-tagging is correctly rejecting null tag value.
> {code:java}
> // wrong behaviour
> // put object with x-amz-tagging header with null tag value should be treated 
> as an empty value.
> bash-5.1$ aws s3api put-object   --bucket buck1   --key key1  --tagging 
> 'tag1'   --endpoint-url  http://s3g:9878
> An error occurred (InvalidTag) when calling the PutObject operation: Some tag 
> values are not specified, please specify the tag values
> // no tags applied which is wrong
> bash-5.1$ aws s3api get-object-tagging   --bucket buck1   --key key1 
> --endpoint-url  http://s3g:9878
> {
>     "TagSet": []
> }{code}
> *Proposed Fix:* 
> Update *{{validateAndGetTagging()}}* in {{EndpointBase}} to allow values with 
> zero length when x-amz-tagging header is present else on normal put object 
> tagging this null tag value should fail, while maintaining the requirement 
> that the Key must have at least one character.
> After fix:
> {code:java}
> // put object with x-amz-tagging header succeded for null tag value
> bash-5.1$ aws s3api put-object   --bucket buck1   --key key1  --tagging 
> 'tag1'   --endpoint-url  http://s3g:9878
> {
>     "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\""
> }
> // confirming with get object tagging
> bash-5.1$ aws s3api get-object-tagging   --bucket buck1   --key key1 
> --endpoint-url  http://s3g:9878
> {
>     "TagSet": [
>         {
>             "Key": "tag1",
>             "Value": ""
>         }
>     ]
> } {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to