Skip to content

storage: delay GC for expired split objects and tombstones - #4252

Open
End-rey wants to merge 1 commit into
masterfrom
fix-child-expiration-epoch-grace
Open

End-rey wants to merge 1 commit into
masterfrom
fix-child-expiration-epoch-grace

Conversation

@End-rey

@End-rey End-rey commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Closes #3621.

Grace periods reduce the race window but do not eliminate it. A late split part may still be accepted after the grace period or on a node without the parent metadata. Likewise, parts missing when a tombstone is applied are not marked by it and may be accepted later - even while the expired tombstone is retained, or after it is collected.

This is a simple mitigation that significantly reduces the risk; a more comprehensive solution may not justify its added complexity.

Retain virtual parents and tombstones for one extra epoch, or a grace period
after time-based expiration, to give nodes more time to synchronize.

Closes #3621.

Signed-off-by: Andrey Butusov <andrey@nspcc.io>
@codecov

codecov Bot commented Oct 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.00000% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 32.28%. Comparing base (0455b95) to head (4eb667e).

Files with missing lines Patch % Lines
pkg/local_object_storage/metabase/iterators.go 90.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4252      +/-   ##
==========================================
+ Coverage   32.24%   32.28%   +0.03%     
==========================================
  Files         673      673              
  Lines       41622    41637      +15     
==========================================
+ Hits        13423    13444      +21     
+ Misses      28199    28193       -6     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Child is still alive after the big object was deleted after expiration

1 participant