From be156d086dba47e72fca1165a6f2da1520e99485 Mon Sep 17 00:00:00 2001 From: Orit Wasserman Date: Sun, 30 Apr 2017 10:16:18 +0300 Subject: [PATCH] rgw: check for exisiting entries in cls_rgw_reshard_add Signed-off-by: Orit Wasserman --- src/cls/rgw/cls_rgw.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/cls/rgw/cls_rgw.cc b/src/cls/rgw/cls_rgw.cc index c6cfd42dfeda4..9335cdd4c694c 100644 --- a/src/cls/rgw/cls_rgw.cc +++ b/src/cls/rgw/cls_rgw.cc @@ -3502,12 +3502,21 @@ static int rgw_reshard_add(cls_method_context_t hctx, bufferlist *in, bufferlist return -EINVAL; } - bufferlist bl; - ::encode(op.entry, bl); string key; generate_reshard_key(op.entry, key); - int ret = cls_cxx_map_set_val(hctx, key, &bl); + bufferlist bl; + int ret = cls_cxx_map_get_val(hctx, key, &bl); + if (ret < 0 && ret != -ENOENT) { + CLS_ERR("error adding reshard job for bucket %s with key %s: %d",op.entry.bucket_name.c_str(), key.c_str() + , ret); + return ret; + } else if (ret != -ENOENT) { + return -EEXIST; + } + + ::encode(op.entry, bl); + ret = cls_cxx_map_set_val(hctx, key, &bl); if (ret < 0) { CLS_ERR("error adding reshard job for bucket %s with key %s",op.entry.bucket_name.c_str(), key.c_str()); return ret; -- 2.39.5