WIP: metabase: Add missing expiration epoch for object stored with EC #1585

Draft
a-savchuk wants to merge 1 commit from a-savchuk/frostfs-node:exp-epoch-for-object-with-ec into master
Member

Suppose there's a complex object stored with EC. It's divided into parts, and these parts are further divided into chunks, except for the linking object. The chunks and linking object are stored in the metabase.

An expiration epoch of the original object should be stored in the expired objects index. In the described scenario, there's no way to determine the expiration epoch of the object from its chunks because a chunk's parent is a part of the original object, not the original object itself. However, the epoch can be determined from the linking object.

Previously, whether the epoch was stored or not depended on the order in which the chunks and linking object were written. Now it's fixed.

The absense of the expiration epoch prevented the GC from deleting this object upon its expiration.

Suppose there's a complex object stored with EC. It's divided into parts, and these parts are further divided into chunks, except for the linking object. The chunks and linking object are stored in the metabase. An expiration epoch of the original object should be stored in the expired objects index. In the described scenario, there's no way to determine the expiration epoch of the object from its chunks because a chunk's parent is a part of the original object, not the original object itself. However, the epoch can be determined from the linking object. Previously, whether the epoch was stored or not depended on the order in which the chunks and linking object were written. Now it's fixed. The absense of the expiration epoch prevented the GC from deleting this object upon its expiration.
a-savchuk added 1 commit 2024-12-27 12:30:32 +00:00
[#xx] metabase: Add missing expiration epoch for object stored with EC
Some checks failed
DCO action / DCO (pull_request) Failing after 11m41s
Pre-commit hooks / Pre-commit (pull_request) Successful in 13m24s
Build / Build Components (pull_request) Successful in 14m14s
Tests and linters / Tests (pull_request) Successful in 14m13s
Tests and linters / Run gofumpt (pull_request) Successful in 14m25s
Vulncheck / Vulncheck (pull_request) Successful in 14m41s
Tests and linters / Lint (pull_request) Successful in 15m17s
Tests and linters / gopls check (pull_request) Successful in 15m45s
Tests and linters / Staticcheck (pull_request) Successful in 15m47s
Tests and linters / Tests with -race (pull_request) Successful in 16m10s
31bd31579a
Suppose there's a complex object stored with EC. It's divided into
parts, and these parts are further divided into chunks, except for
the linking object. The chunks and linking object are stored in the
metabase.

An expiration epoch of the original object should be stored in the
expired objects index. In the described scenario, there's no way to
determine the expiration epoch of the object from its chunks because
a chunk's parent is a part of the original object, not the original
object itself. However, the epoch can be determined from the linking
object.

Previously, whether the epoch was stored or not depended on the order
in which the chunks and linking object were written. Now, it's fixed.

The absense of the expiration epoch prevented the GC from deleting
this object upon its expiration.

Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
a-savchuk force-pushed exp-epoch-for-object-with-ec from 31bd31579a to d4ff44ef83 2024-12-27 12:31:29 +00:00 Compare
Author
Member

This fix is for complex objects with EC only. Simple objects with EC need a fix as well, but it may take some time.

This fix is for _complex_ objects with EC only. Simple objects with EC need a fix as well, but it may take some time.
a-savchuk changed title from WIP: metabase: Add missing expiration epoch for object stored with EC to metabase: Add missing expiration epoch for object stored with EC 2024-12-27 12:55:49 +00:00
a-savchuk requested review from storage-core-committers 2024-12-27 12:55:50 +00:00
a-savchuk requested review from storage-core-developers 2024-12-27 12:55:51 +00:00
a-savchuk changed title from metabase: Add missing expiration epoch for object stored with EC to WIP: metabase: Add missing expiration epoch for object stored with EC 2024-12-27 13:36:55 +00:00
All checks were successful
DCO action / DCO (pull_request) Successful in 17m11s
Required
Details
Pre-commit hooks / Pre-commit (pull_request) Successful in 18m42s
Required
Details
Vulncheck / Vulncheck (pull_request) Successful in 19m49s
Required
Details
Tests and linters / Run gofumpt (pull_request) Successful in 20m25s
Required
Details
Tests and linters / Tests (pull_request) Successful in 20m34s
Required
Details
Build / Build Components (pull_request) Successful in 21m8s
Required
Details
Tests and linters / Lint (pull_request) Successful in 21m11s
Required
Details
Tests and linters / Tests with -race (pull_request) Successful in 21m22s
Required
Details
Tests and linters / Staticcheck (pull_request) Successful in 21m31s
Required
Details
Tests and linters / gopls check (pull_request) Successful in 22m18s
Required
Details
This pull request is marked as a work in progress.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u exp-epoch-for-object-with-ec:a-savchuk-exp-epoch-for-object-with-ec
git checkout a-savchuk-exp-epoch-for-object-with-ec
Sign in to join this conversation.
No reviewers
TrueCloudLab/storage-core-committers
TrueCloudLab/storage-core-developers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: TrueCloudLab/frostfs-node#1585
No description provided.