From 2f663d9099bbdb62521556f9deaa6358cd9b9b22 Mon Sep 17 00:00:00 2001 From: Orit Wasserman Date: Thu, 27 Aug 2015 16:35:25 +0200 Subject: [PATCH] rgw: make radosgw-admin user rm idempotent Fixes: #5378 Signed-off-by: Orit Wasserman --- src/rgw/rgw_admin.cc | 4 +++- src/rgw/rgw_user.cc | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 5b1a75b4766ee..af82ecbbf770e 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -1764,7 +1764,9 @@ int main(int argc, char **argv) break; case OPT_USER_RM: ret = user.remove(user_op, &err_msg); - if (ret < 0) { + if (ret == -ENOENT) { + cerr << err_msg << std::endl; + } else if (ret < 0) { cerr << "could not remove user: " << err_msg << std::endl; return -ret; } diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc index 47475c3d8b5ea..1931565da9bd6 100644 --- a/src/rgw/rgw_user.cc +++ b/src/rgw/rgw_user.cc @@ -466,7 +466,7 @@ int rgw_delete_user(RGWRados *store, RGWUserInfo& info, RGWObjVersionTracker& ob rgw_obj uid_obj(store->zone.user_uid_pool, info.user_id); ldout(store->ctx(), 10) << "removing user index: " << info.user_id << dendl; ret = store->meta_mgr->remove_entry(user_meta_handler, info.user_id, &objv_tracker); - if (ret < 0 && ret != -ENOENT) { + if (ret < 0 && ret != -ENOENT && ret != -ECANCELED) { ldout(store->ctx(), 0) << "ERROR: could not remove " << info.user_id << ":" << uid_obj << ", should be fixed (err=" << ret << ")" << dendl; return ret; } @@ -1903,7 +1903,7 @@ int RGWUser::execute_remove(RGWUserAdminOpState& op_state, std::string *err_msg) if (!op_state.has_existing_user()) { set_err_msg(err_msg, "user does not exist"); - return -EINVAL; + return -ENOENT; } bool done; -- 2.39.5