@@ -439,6 +439,7 @@ int Restore::process_restore_entry(RestoreEntry& entry, optional_yield y)
439439 using ceph::decode;
440440 decode (restore_status, iter);
441441 }
442+ // check if its still in Progress state
442443 if (restore_status != rgw::sal::RGWRestoreStatus::RestoreAlreadyInProgress) {
443444 ldpp_dout (this , 5 ) << __PRETTY_FUNCTION__ << " : Restore of object " << obj->get_key ()
444445 << " not in progress state" << dendl;
@@ -625,52 +626,36 @@ int Restore::restore_obj_from_cloud(rgw::sal::Bucket* pbucket,
625626 return ret;
626627 }
627628
628- // now go ahead with restoring object
629- bool in_progress = false ;
630- ret = pobj->restore_obj_from_cloud (pbucket, tier, cct, days, in_progress, dpp, y);
629+ // now add the entry to the restore list to be processed by Restore worker thread
630+ // asynchronoudly
631+ RestoreEntry entry;
632+ entry.bucket = pbucket->get_key ();
633+ entry.obj_key = pobj->get_key ();
634+ entry.status = rgw::sal::RGWRestoreStatus::RestoreAlreadyInProgress;
635+ entry.days = days;
636+ entry.zone_id = driver->get_zone ()->get_id ();
637+
638+ ldpp_dout (this , 10 ) << " Restore:: Adding restore entry of object(" << pobj->get_key () << " ) entry: " << entry << dendl;
639+
640+ int index = choose_oid (entry);
641+ ldpp_dout (this , 10 ) << __PRETTY_FUNCTION__ << " : Adding restore entry of object(" << pobj->get_key () << " ) entry: " << entry << " , to shard:" << obj_names[index] << dendl;
642+
643+ std::vector<rgw::restore::RestoreEntry> r_entries;
644+ r_entries.push_back (entry);
645+ ret = sal_restore->add_entries (this , y, index, r_entries);
631646
632647 if (ret < 0 ) {
633- ldpp_dout (this , -1 ) << __PRETTY_FUNCTION__ << " : ERROR: object " << pobj->get_key () << " fetching failed" << ret << dendl;
634- auto reset_ret = set_cloud_restore_status (this , pobj, y, rgw::sal::RGWRestoreStatus::RestoreFailed);
648+ ldpp_dout (this , -1 ) << __PRETTY_FUNCTION__ << " : ERROR: Adding restore entry of object(" << pobj->get_key () << " ) failed" << ret << dendl;
635649
650+ auto reset_ret = set_cloud_restore_status (this , pobj, y, rgw::sal::RGWRestoreStatus::RestoreFailed);
636651 if (reset_ret < 0 ) {
637- ldpp_dout (this , -1 ) << __PRETTY_FUNCTION__ << " : Setting restore status to RestoreFailed failed for object(" << pobj->get_key () << " ) " << reset_ret << dendl;
652+ ldpp_dout (this , -1 ) << __PRETTY_FUNCTION__ << " : Setting restore status as RestoreFailed failed for object(" << pobj->get_key () << " ) " << reset_ret << dendl;
638653 }
639654
640655 return ret;
641656 }
642657
643- if (in_progress) {
644- // add restore entry to the list
645- RestoreEntry entry;
646- entry.bucket = pbucket->get_key ();
647- entry.obj_key = pobj->get_key ();
648- entry.status = rgw::sal::RGWRestoreStatus::RestoreAlreadyInProgress;
649- entry.days = days;
650- entry.zone_id = driver->get_zone ()->get_id ();
651-
652- ldpp_dout (this , 10 ) << " Restore:: Adding restore entry of object(" << pobj->get_key () << " ) entry: " << entry << dendl;
653-
654- int index = choose_oid (entry);
655- ldpp_dout (this , 10 ) << __PRETTY_FUNCTION__ << " : Adding restore entry of object(" << pobj->get_key () << " ) entry: " << entry << " , to shard:" << obj_names[index] << dendl;
656-
657- std::vector<rgw::restore::RestoreEntry> r_entries;
658- r_entries.push_back (entry);
659- ret = sal_restore->add_entries (this , y, index, r_entries);
660-
661- if (ret < 0 ) {
662- ldpp_dout (this , -1 ) << __PRETTY_FUNCTION__ << " : ERROR: Adding restore entry of object(" << pobj->get_key () << " ) failed" << ret << dendl;
663-
664- auto reset_ret = set_cloud_restore_status (this , pobj, y, rgw::sal::RGWRestoreStatus::RestoreFailed);
665- if (reset_ret < 0 ) {
666- ldpp_dout (this , -1 ) << __PRETTY_FUNCTION__ << " : Setting restore status as RestoreFailed failed for object(" << pobj->get_key () << " ) " << reset_ret << dendl;
667- }
668-
669- return ret;
670- }
671- }
672-
673- ldpp_dout (this , 10 ) << __PRETTY_FUNCTION__ << " : Restore of object " << pobj->get_key () << (in_progress ? " is in progress" : " succeeded" ) << dendl;
658+ ldpp_dout (this , 10 ) << __PRETTY_FUNCTION__ << " : Restore of object " << pobj->get_key () << " is in progress." << dendl;
674659 return ret;
675660}
676661
0 commit comments