Bug #58879
S3 CompleteMultipartUploadResult has empty ETag element
Status:
Pending Backport
Priority:
Normal
Assignee:
-
Target version:
-
% Done:
0%
Source:
Tags:
multipart low-hanging-fruit backport_processed
Backport:
pacific quincy reef
Regression:
Yes
Severity:
3 - minor
Reviewed:
Description
<?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/ <http://s3.amazonaws.com/doc/2006-03-01/>"> <Location>s3.myceph.com/test-bucket/test.file</Location> <Bucket>test-bucket</Bucket> <Key>test.file</Key> <ETag></ETag> </CompleteMultipartUploadResult>
The ETag element should not be empty.
Related issues
History
#1 Updated by Casey Bodley about 1 year ago
- Related to Bug #6830: S3 CompleteMultipartUploadResult has empty ETag element added
#2 Updated by Casey Bodley about 1 year ago
- Tags changed from multipart to multipart low-hanging-fruit
#3 Updated by Daniel Gryniewicz 12 months ago
- Pull request ID set to 50627
#4 Updated by Casey Bodley 12 months ago
- Status changed from New to Fix Under Review
- Backport changed from pacific quincy to pacific quincy reef
#5 Updated by Casey Bodley 11 months ago
- Status changed from Fix Under Review to Pending Backport
#6 Updated by Backport Bot 11 months ago
- Copied to Backport #59729: pacific: S3 CompleteMultipartUploadResult has empty ETag element added
#7 Updated by Backport Bot 11 months ago
- Copied to Backport #59730: quincy: S3 CompleteMultipartUploadResult has empty ETag element added
#8 Updated by Backport Bot 11 months ago
- Copied to Backport #59731: reef: S3 CompleteMultipartUploadResult has empty ETag element added
#9 Updated by Backport Bot 11 months ago
- Tags changed from multipart low-hanging-fruit to multipart low-hanging-fruit backport_processed
#10 Updated by Matt Benjamin 6 days ago
This seems to be helping, review appreciated:
diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc
index 3c4c59fc70c..f3f4ce859cb 100644
--- a/src/rgw/rgw_op.cc
+++ b/src/rgw/rgw_op.cc
@@ -6809,10 +6809,17 @@ void RGWCompleteMultipart::execute(optional_yield y)
ldpp_dout(this, 0) << "WARNING: failed to remove object " << meta_obj << dendl;
}
+ r = s->object->get_obj_attrs(s->yield, this);
+ if (r < 0) {
+ ldpp_dout(this, 0) << __func__ << "() ERROR: get_obj_attrs() returned ret=" << r << dendl;
+ }
+
+ etag = s->object->get_attrs()[RGW_ATTR_ETAG].to_str();
+
// send request to notification manager
- int ret = res->publish_commit(this, ofs, upload->get_mtime(), etag, target_obj->get_instance());
- if (ret < 0) {
- ldpp_dout(this, 1) << "ERROR: publishing notification failed, with error: " << ret << dendl;
+ r = res->publish_commit(this, ofs, upload->get_mtime(), etag, target_obj->get_instance());
+ if (r < 0) {
+ ldpp_dout(this, 1) << "ERROR: publishing notification failed, with error: " << r << dendl;
// too late to rollback operation, hence op_ret is not set here
}
} // RGWCompleteMultipart::execute
@@ -6866,8 +6873,6 @@ void RGWCompleteMultipart::complete()
}
}
- etag = s->object->get_attrs()[RGW_ATTR_ETAG].to_str();
-
send_response();
}