Elek, Marton created HDDS-739:
---------------------------------
Summary: Support MultiDeleteRequest without XML namespace
Key: HDDS-739
URL: https://issues.apache.org/jira/browse/HDDS-739
Project: Hadoop Distributed Data Store
Issue Type: Sub-task
Components: S3
Reporter: Elek, Marton
Assignee: Elek, Marton
When I run the IContract* unit tests from s3a adapter to test our s3 gateway I
found that some of the unit tests (such as
{color:#000000}ITestS3AContractGetFileStatus{color}.testListStatusEmptyDirectory)
fails with org.apache.hadoop.fs.s3a.AWSBadRequestException.
Checking the request/response I found that the multi delete request (POST to
the bucket address with ending with ?delete) fails with HTTP 400 and without
any error in the logs.
The multi delete endpoint was tested with the robot tests and it worked well
with aws s3 cli:
{code:java}
aws s3api --endpoint http://localhost:9878 delete-objects --bucket buckettest
--delete
'Objects=[{Key=multidelete/f1},{Key=multidelete/f2},{Key=multidelete/f4}]'{code}
After some more investigation I found that the XML namespace was missing from
the request:
The request was something like this:
{code:java}
<Delete><Object><Key>multidelete/f1</Key></Object><Object><Key>multidelete/f2</Key></Object><Object><Key>multidelete/f4</Key></Object></Delete>{code}
Instead of this:
{code:java}
<Delete
xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Object><Key>multidelete/f1</Key></Object><Object><Key>multidelete/f2</Key></Object><Object><Key>multidelete/f4</Key></Object></Delete>{code}
I believe the right approach is to add the namespace to request as it's
documented by the AWS documentation but it seems s3a adapter doesn't do it and
s3 accepts it.
We need a custom jaxb unmarshaller logic for the multi delete requests to
accept requests both with and without namespaces.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]