Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mimic: rgw: provide admin-friendly reshard status output #29285

Merged
merged 2 commits into from Aug 6, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
48 changes: 48 additions & 0 deletions doc/radosgw/dynamicresharding.rst
Expand Up @@ -83,6 +83,54 @@ Bucket resharding status

# radosgw-admin reshard status --bucket <bucket_name>

The output is a json array of 3 objects (reshard_status, new_bucket_instance_id, num_shards) per shard.

For example, the output at different Dynamic Resharding stages is shown below:

``1. Before resharding occurred:``
::

[
{
"reshard_status": "not-resharding",
"new_bucket_instance_id": "",
"num_shards": -1
}
]

``2. During resharding:``
::

[
{
"reshard_status": "in-progress",
"new_bucket_instance_id": "1179f470-2ebf-4630-8ec3-c9922da887fd.8652.1",
"num_shards": 2
},
{
"reshard_status": "in-progress",
"new_bucket_instance_id": "1179f470-2ebf-4630-8ec3-c9922da887fd.8652.1",
"num_shards": 2
}
]

``3, After resharding completed:``
::

[
{
"reshard_status": "not-resharding",
"new_bucket_instance_id": "",
"num_shards": -1
},
{
"reshard_status": "not-resharding",
"new_bucket_instance_id": "",
"num_shards": -1
}
]


Cancel pending bucket resharding
--------------------------------

Expand Down
16 changes: 1 addition & 15 deletions src/cls/rgw/cls_rgw_types.cc
Expand Up @@ -668,21 +668,7 @@ void cls_rgw_reshard_entry::generate_test_instances(list<cls_rgw_reshard_entry*>

void cls_rgw_bucket_instance_entry::dump(Formatter *f) const
{
string status_str;
switch(reshard_status) {
case CLS_RGW_RESHARD_NONE:
status_str= "none";
break;
case CLS_RGW_RESHARD_IN_PROGRESS:
status_str = "in-progress";
break;
case CLS_RGW_RESHARD_DONE:
status_str = "done";
break;
default:
status_str = "invalid";
}
encode_json("reshard_status", status_str, f);
encode_json("reshard_status", to_string(reshard_status), f);
encode_json("new_bucket_instance_id", new_bucket_instance_id, f);
encode_json("num_shards", num_shards, f);

Expand Down
20 changes: 10 additions & 10 deletions src/cls/rgw/cls_rgw_types.h
Expand Up @@ -610,22 +610,22 @@ struct rgw_bucket_category_stats {
WRITE_CLASS_ENCODER(rgw_bucket_category_stats)

enum cls_rgw_reshard_status {
CLS_RGW_RESHARD_NONE = 0,
CLS_RGW_RESHARD_IN_PROGRESS = 1,
CLS_RGW_RESHARD_DONE = 2,
CLS_RGW_RESHARD_NOT_RESHARDING = 0,
CLS_RGW_RESHARD_IN_PROGRESS = 1,
CLS_RGW_RESHARD_DONE = 2,
};

static inline std::string to_string(const enum cls_rgw_reshard_status status)
{
switch (status) {
case CLS_RGW_RESHARD_NONE:
return "CLS_RGW_RESHARD_NONE";
case CLS_RGW_RESHARD_NOT_RESHARDING:
return "not-resharding";
break;
case CLS_RGW_RESHARD_IN_PROGRESS:
return "CLS_RGW_RESHARD_IN_PROGRESS";
return "in-progress";
break;
case CLS_RGW_RESHARD_DONE:
return "CLS_RGW_RESHARD_DONE";
return "done";
break;
default:
break;
Expand All @@ -634,7 +634,7 @@ static inline std::string to_string(const enum cls_rgw_reshard_status status)
}

struct cls_rgw_bucket_instance_entry {
cls_rgw_reshard_status reshard_status{CLS_RGW_RESHARD_NONE};
cls_rgw_reshard_status reshard_status{CLS_RGW_RESHARD_NOT_RESHARDING};
string new_bucket_instance_id;
int32_t num_shards{-1};

Expand All @@ -660,7 +660,7 @@ struct cls_rgw_bucket_instance_entry {
static void generate_test_instances(list<cls_rgw_bucket_instance_entry*>& o);

void clear() {
reshard_status = CLS_RGW_RESHARD_NONE;
reshard_status = CLS_RGW_RESHARD_NOT_RESHARDING;
new_bucket_instance_id.clear();
}

Expand All @@ -671,7 +671,7 @@ struct cls_rgw_bucket_instance_entry {
}

bool resharding() const {
return reshard_status != CLS_RGW_RESHARD_NONE;
return reshard_status != CLS_RGW_RESHARD_NOT_RESHARDING;
}
bool resharding_in_progress() const {
return reshard_status == CLS_RGW_RESHARD_IN_PROGRESS;
Expand Down
4 changes: 2 additions & 2 deletions src/rgw/rgw_reshard.cc
Expand Up @@ -270,7 +270,7 @@ int RGWBucketReshard::clear_index_shard_reshard_status(RGWRados* store,
int ret = set_resharding_status(store, bucket_info,
bucket_info.bucket.bucket_id,
(num_shards < 1 ? 1 : num_shards),
CLS_RGW_RESHARD_NONE);
CLS_RGW_RESHARD_NOT_RESHARDING);
if (ret < 0) {
ldout(store->ctx(), 0) << "RGWBucketReshard::" << __func__ <<
" ERROR: error clearing reshard status from index shard " <<
Expand Down Expand Up @@ -374,7 +374,7 @@ class BucketInfoReshardUpdate
" clear_index_shard_status returned " << ret << dendl;
}
bucket_info.new_bucket_instance_id.clear();
set_status(CLS_RGW_RESHARD_NONE); // clears new_bucket_instance as well
set_status(CLS_RGW_RESHARD_NOT_RESHARDING); // clears new_bucket_instance as well
}
}

Expand Down