do {
if (lease_cr && !lease_cr->is_locked()) {
drain_all();
+ yield call(marker_tracker.flush());
tn->log(1, "no lease or lease is lost, abort");
return set_cr_error(-ECANCELED);
}
if (retcode < 0 && retcode != -ENOENT) {
set_status("failed bucket listing, going down");
drain_all();
+ yield spawn(marker_tracker.flush(), true);
return set_cr_error(retcode);
}
if (list_result.entries.size() > 0) {
for (; entries_iter != list_result.entries.end(); ++entries_iter) {
if (lease_cr && !lease_cr->is_locked()) {
drain_all();
+ yield call(marker_tracker.flush());
tn->log(1, "no lease or lease is lost, abort");
return set_cr_error(-ECANCELED);
}
tn->unset_flag(RGW_SNS_FLAG_ACTIVE);
if (lease_cr && !lease_cr->is_locked()) {
tn->log(1, "no lease or lease is lost, abort");
+ yield call(marker_tracker.flush());
return set_cr_error(-ECANCELED);
}
yield call(marker_tracker.flush());
do {
if (lease_cr && !lease_cr->is_locked()) {
drain_all();
+ yield call(marker_tracker.flush());
tn->log(1, "no lease or lease is lost, abort");
return set_cr_error(-ECANCELED);
}
if (retcode < 0 && retcode != -ENOENT) {
/* wait for all operations to complete */
drain_all();
+ yield spawn(marker_tracker.flush(), true);
return set_cr_error(retcode);
}
list_result = std::move(extended_result.entries);
for (; entries_iter != entries_end; ++entries_iter) {
if (lease_cr && !lease_cr->is_locked()) {
drain_all();
+ yield call(marker_tracker.flush());
tn->log(1, "no lease or lease is lost, abort");
return set_cr_error(-ECANCELED);
}
using ReadCR = RGWSimpleRadosReadCR<rgw_bucket_sync_status>;
using WriteCR = RGWSimpleRadosWriteCR<rgw_bucket_sync_status>;
+ objv.clear();
yield call(new ReadCR(dpp, env->async_rados, env->svc->sysobj,
status_obj, &bucket_status, false, &objv));
if (retcode == -ENOENT) {
if (retcode == -EEXIST) {
// raced with another create, read its status
tn->log(20, "raced with another create, read its status");
+ objv.clear();
yield call(new ReadCR(dpp, env->async_rados, env->svc->sysobj,
status_obj, &bucket_status, false, &objv));
}
}
// check if local state is "stopped"
+ objv.clear();
yield call(new ReadCR(dpp, env->async_rados, env->svc->sysobj,
status_obj, &bucket_status, false, &objv));
if (retcode < 0) {
}
// reread the status after acquiring the lock
+ objv.clear();
yield call(new ReadCR(dpp, env->async_rados, env->svc->sysobj,
status_obj, &bucket_status, false, &objv));
if (retcode < 0) {