rgw: add exclusive flag to RGWRealm::create_control

this was causing failures in 'radosgw-admin realm pull':

  ERROR creating control for new realm realm0: (17) File exists

'realm pull' calls RGWRealm::create() with exclusive=false, but
RGWRealm::create_control() was using exclusive=true

Signed-off-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
Casey Bodley 2016-03-31 12:16:08 -04:00
parent 1f3aad6b10
commit 7567b45fc0
2 changed files with 4 additions and 4 deletions

View File

@ -703,7 +703,7 @@ int RGWRealm::create(bool exclusive)
return ret;
}
// create the control object for watch/notify
ret = create_control();
ret = create_control(exclusive);
if (ret < 0) {
ldout(cct, 0) << "ERROR creating control for new realm " << name << ": " << cpp_strerror(-ret) << dendl;
return ret;
@ -753,12 +753,12 @@ int RGWRealm::delete_obj()
return delete_control();
}
int RGWRealm::create_control()
int RGWRealm::create_control(bool exclusive)
{
auto pool_name = get_pool_name(cct);
auto pool = rgw_bucket{pool_name.c_str()};
auto oid = get_control_oid();
return rgw_put_system_obj(store, pool, oid, nullptr, 0, true,
return rgw_put_system_obj(store, pool, oid, nullptr, 0, exclusive,
nullptr, real_time(), nullptr);
}

View File

@ -1301,7 +1301,7 @@ class RGWRealm : public RGWSystemMetaObj
string current_period;
epoch_t epoch{0}; //< realm epoch, incremented for each new period
int create_control();
int create_control(bool exclusive);
int delete_control();
public:
RGWRealm() {}