Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Timeline offloading persistence (#9444)
Persist timeline offloaded state to S3. Right now, as of #8907, at each restart of the pageserver, all offloaded state is lost, so we load the full timeline again. As it starts with an empty local directory, we might potentially download some files again, leading to downloads that are ultimately wasteful. This patch adds support for persisting the offloaded state, allowing us to never load offloaded timelines in the first place. The persistence feature is facilitated via a new file in S3 that is tenant-global, which contains a list of all offloaded timelines. It is updated each time we offload or unoffload a timeline, and otherwise never touched. This choice means that tenants where no offloading is happening will not immediately get a manifest, keeping the change very minimal at the start. We leave generation support for future work. It is important to support generations, as in the worst case, the manifest might be overwritten by an older generation after a timeline has been unoffloaded (and unarchived), so the next pageserver process instantiation might wrongly believe that some timeline is still offloaded even though it should be active. Part of #9386, #8088
- Loading branch information
6f8fcdf
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
5238 tests run: 5023 passed, 1 failed, 214 skipped (full report)
Failures on Postgres 17
test_deletion_queue_recovery[no-validate-lose]
: release-x86-64Flaky tests (1)
Postgres 17
test_local_only_layers_after_crash
: debug-x86-64Test coverage report is not available
6f8fcdf at 2024-10-22T21:41:15.267Z :recycle: