entry_timestamp = sync_marker.timestamp; // time when full sync started
do {
if (!lease_cr->is_locked()) {
- lease_cr->go_down();
drain_all();
+ tn->log(1, "lease is lost, abort");
return set_cr_error(-ECANCELED);
}
omapvals = std::make_shared<RGWRadosGetOmapValsCR::Result>();
marker_tracker.emplace(sc, status_oid, sync_marker, tn);
do {
if (!lease_cr->is_locked()) {
- lease_cr->go_down();
drain_all();
+ tn->log(1, "lease is lost, abort");
return set_cr_error(-ECANCELED);
}
- current_modified.clear();
- inc_lock.lock();
- current_modified.swap(modified_shards);
- inc_lock.unlock();
+ {
+ current_modified.clear();
+ std::unique_lock il(inc_lock);
+ current_modified.swap(modified_shards);
+ il.unlock();
+ }
if (current_modified.size() > 0) {
tn->set_flag(RGW_SNS_FLAG_ACTIVE); /* actually have entries to sync */
set_status("done iterating over all objects");
/* wait for all operations to complete */
- drain_all_cb([&](uint64_t stack_id, int ret) {
- if (ret < 0) {
- tn->log(10, "a sync operation returned error");
- sync_result = ret;
- }
- return 0;
- });
+ drain_all_cb(capture_error(sync_result));
+
tn->unset_flag(RGW_SNS_FLAG_ACTIVE);
if (lease_cr && !lease_cr->is_locked()) {
+ tn->log(1, "no lease or lease is lost, abort");
return set_cr_error(-ECANCELED);
}
yield call(marker_tracker.flush());