cout << "old bucket instance id: " << bucket_info.bucket.bucket_id << std::endl;
cout << "new bucket instance id: " << new_bucket_info.bucket.bucket_id << std::endl;
- ret = store->init_bucket_index(new_bucket_info.bucket, new_bucket_info.num_shards);
+ ret = store->init_bucket_index(new_bucket_info, new_bucket_info.num_shards);
if (ret < 0) {
cerr << "ERROR: failed to init new bucket indexes: " << cpp_strerror(-ret) << std::endl;
return -ret;
ret = put_linked_bucket_info(info, exclusive, ceph::real_time(), pep_objv, &attrs, true);
if (ret == -EEXIST) {
+ librados::IoCtx index_ctx;
+ map<int, string> bucket_objs;
+ int r = open_bucket_index(info, index_ctx, bucket_objs);
+ if (r < 0)
+ return r;
+
/* we need to reread the info and return it, caller will have a use for it */
RGWObjVersionTracker instance_ver = info.objv_tracker;
info.objv_tracker.clear();
/* only remove it if it's a different bucket instance */
if (info.bucket.bucket_id != bucket.bucket_id) {
- /* remove bucket index */
- librados::IoCtx index_ctx; // context for new bucket
- map<int, string> bucket_objs;
- int r = open_bucket_index(info, index_ctx, bucket_objs);
- if (r < 0)
- return r;
-
/* remove bucket meta instance */
string entry = bucket.get_key();
r = rgw_bucket_instance_remove_entry(this, entry, &instance_ver);