From 40689d1acab4da963d05540eb837fd12a4411269 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 30 Sep 2016 16:13:00 -0700 Subject: [PATCH] rgw: don't fail if lost race when setting acls Fixes: http://tracker.ceph.com/issues/16930 When concurrently setting acls on object/bucket, we could lose in a race. Instead of retry, just return success (same effect as if we won and then other writer overwrote us). Signed-off-by: Yehuda Sadeh (cherry picked from commit 6e9a915b565923081f609048072b8d75716a74ea) --- src/rgw/rgw_op.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index b4a09d7fcda6f..8f22c82a773ab 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -3558,6 +3558,9 @@ void RGWPutACLs::execute() attrs[RGW_ATTR_ACL] = bl; op_ret = rgw_bucket_set_attrs(store, s->bucket_info, attrs, &s->bucket_info.objv_tracker); } + if (op_ret == -ECANCELED) { + op_ret = 0; /* lost a race, but it's ok because acls are immutable */ + } } int RGWGetCORS::verify_permission() -- 2.39.5