Skip to content

[rgw][tentacle] Add Restore support from Glacier/Tape cloud endpoints#64360

Merged
cbodley merged 7 commits intoceph:tentaclefrom
soumyakoduri:wip-skoduri-tentacle
Jul 11, 2025
Merged

[rgw][tentacle] Add Restore support from Glacier/Tape cloud endpoints#64360
cbodley merged 7 commits intoceph:tentaclefrom
soumyakoduri:wip-skoduri-tentacle

Conversation

@soumyakoduri
Copy link
Contributor

@soumyakoduri soumyakoduri commented Jul 6, 2025

This is backport of below PRs, which adds Restore support for Glacier/Tape endpoints.

#62713
#64361

Fixes: https://tracker.ceph.com/issues/72015
Signed-off-by: Soumya Koduri skoduri@redhat.com

Checklist

  • Tracker (select at least one)
    • References tracker ticket
    • Very recent bug; references commit where it was introduced
    • New feature (ticket optional)
    • Doc update (no ticket needed)
    • Code cleanup (no ticket needed)
  • Component impact
    • Affects Dashboard, opened tracker ticket
    • Affects Orchestrator, opened tracker ticket
    • No impact that needs to be tracked
  • Documentation (select at least one)
    • Updates relevant documentation
    • No doc update is appropriate
  • Tests (select at least one)
Show available Jenkins commands

@cbodley
Copy link
Contributor

cbodley commented Jul 7, 2025

is #62713 ready to merge to main?

edit: it merged

@soumyakoduri soumyakoduri force-pushed the wip-skoduri-tentacle branch from 8564d8a to f07c9fb Compare July 7, 2025 18:27
@soumyakoduri
Copy link
Contributor Author

jenkins test api

@soumyakoduri
Copy link
Contributor Author

@cbodley
Copy link
Contributor

cbodley commented Jul 8, 2025

The failures reported in few tests seem to be due to missing modules and unrelated to this PR

i agree that they're unrelated, but they prevented lots of other tests from running after. could you please --rerun?

@soumyakoduri
Copy link
Contributor Author

The failures reported in few tests seem to be due to missing modules and unrelated to this PR

i agree that they're unrelated, but they prevented lots of other tests from running after. could you please --rerun?

Sure!

@soumyakoduri
Copy link
Contributor Author

…cier/Tape endpoint

Restoration of objects from certain cloud services (like Glacier/Tape) could
take significant amount of time (even days). Hence store the state of such restore requests
and periodically process them.

Brief summary of changes

* Refactored existing restore code to consolidate and move all restore processing into rgw_restore* file/class

* RGWRestore class is defined to manage the restoration of objects.

* Lastly, for SAL_RADOS, FIFO is used to store and read restore entries.

Currently, this PR handles storing state of restore requests sent to cloud-glacier tier-type which need async processing.
The changes are tested with AWS Glacier Flexible Retrieval with tier_type Expedited and Standard.

Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>
Reviewed-by: Adam Emerson <aemerson@redhat.com>
Reviewed-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
Reviewed-by: Daniel Gryniewicz <dang@redhat.com>

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit ef96bb0)
In case adding restore entry to FIFO fails, reset the `restore_status`
of that object as "RestoreFailed" so that restore process can be
retried from the end S3 user.

Reviewed-by: Adam Emerson <aemerson@redhat.com>
Reviewed-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit 9974f51)
In addition, added some more debug statements and done code cleanup

Reviewed-by: Adam Emerson <aemerson@redhat.com>
Reviewed-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit f00ac7c)
Reviewed-by: Adam Emerson <aemerson@redhat.com>
Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit b3c867a)
@soumyakoduri soumyakoduri force-pushed the wip-skoduri-tentacle branch from f07c9fb to 7502b8c Compare July 10, 2025 16:42
@cbodley
Copy link
Contributor

cbodley commented Jul 10, 2025

from https://jenkins.ceph.com/job/ceph-api/99806/

src/rgw/driver/rados/rgw_sal_rados.h:961:15: error: 'unlock' marked 'override' but does not override any member functions
  961 |   virtual int unlock(const DoutPrefixProvider* dpp, optional_yield y) override;
      |               ^
src/rgw/driver/rados/rgw_sal_rados.h:961:15: error: 'rgw::sal::RadosRestoreSerializer::unlock' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
src/rgw/rgw_sal.h:1578:15: note: hidden overloaded virtual function 'rgw::sal::Serializer::unlock' declared here: different number of parameters (0 vs 2)
 1578 |   virtual int unlock()  = 0;
      |               ^

Use new neorados/FIFO routines to store restore state.

Note: Old librados ioctx is also still retained as it is needed
by RestoreRadosSerializer.

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit faf06bc)
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit a981b4c)
Fix the version of `restore_pool` and `dedup_pool` to be
 compatible with earlier releases.

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit b6fc0be)
@soumyakoduri soumyakoduri force-pushed the wip-skoduri-tentacle branch from 7502b8c to dc123a7 Compare July 11, 2025 03:09
@soumyakoduri
Copy link
Contributor Author

from https://jenkins.ceph.com/job/ceph-api/99806/

src/rgw/driver/rados/rgw_sal_rados.h:961:15: error: 'unlock' marked 'override' but does not override any member functions
  961 |   virtual int unlock(const DoutPrefixProvider* dpp, optional_yield y) override;
      |               ^
src/rgw/driver/rados/rgw_sal_rados.h:961:15: error: 'rgw::sal::RadosRestoreSerializer::unlock' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
src/rgw/rgw_sal.h:1578:15: note: hidden overloaded virtual function 'rgw::sal::Serializer::unlock' declared here: different number of parameters (0 vs 2)
 1578 |   virtual int unlock()  = 0;
      |               ^

I have addressed the conflicts and also ran cloud-transition/restore tests for sanity check -
http://pulpito.front.sepia.ceph.com/soumyakoduri-2025-07-11_06:57:40-rgw:cloud-transition-wip-skoduri-tentacle-distro-default-smithi

I guess this is now ready to be merged.

@cbodley cbodley merged commit fd8429a into ceph:tentacle Jul 11, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants