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
rgw: fix error handling in ListBucketIndexesCR #18198
Conversation
to test, i used this diff to inject an error in int operate() override {
reenter(this) {
+#if 0
yield {
string entrypoint = string("/admin/metadata/bucket.instance");
/* FIXME: need a better scaling solution here, requires streaming output */
call(new RGWReadRESTResourceCR<list<string> >(store->ctx(), sync_env->conn, sync_env->http_manager,
entrypoint, NULL, &result));
}
+#else
+ set_retcode(-EINVAL); // inject failure
+#endif without the fix applied, data sync status got stuck on full sync:
with the fix applied, data sync status instead gets stuck in the correct 'preparing for full sync' state:
with the change to |
removed tags per @cbodley see test results above |
if the metadata listing fails, we won't have to clean up entries_index Signed-off-by: Casey Bodley <cbodley@redhat.com>
the call to set_state() returns 0, when we want operate() to return the error code instead. use set_cr_error() to do this Fixes: http://tracker.ceph.com/issues/21735 Signed-off-by: Casey Bodley <cbodley@redhat.com>
similar to RGWMetaSyncShardControlCR, we don't want to exit and stop the data sync processor thread on failures. we want to keep retrying with backoff Signed-off-by: Casey Bodley <cbodley@redhat.com>
the call to set_state() returns 0, when we want operate() to return the
error code instead. use set_cr_error() to do this
Fixes: http://tracker.ceph.com/issues/21735