Skip to content

Decouple expired object collector from epoch ticker #3522

@roman-khimov

Description

@roman-khimov

Is your feature request related to a problem? Please describe.

I'm always frustrated when I'm thinking of how expired objects are handled (and even more frustrated when I'm fixing thing as in #3511):

  • expired objects are just another sort of garbage
  • there can be 1M or more objects expired in an epoch
  • marking them as garbage separately from deletion just adds useless pressure to metabase

Describe the solution you'd like

  1. Move their handling from epoch event handler to regular GC cycle. Epoch event just sets some known epoch and that's it.
  2. Grab a number of them (same limit as in GC) when doing regular GC cycle.
  3. Handle them as usual, if we find that some object shouldn't be deleted (a lock is stored on the other shard), copy this lock to current shard.

Describe alternatives you've considered

No alternatives.

Metadata

Metadata

Assignees

Labels

I3Minimal impactS3Minimally significantU2Seriously plannedenhancementImproving existing functionalityneofs-storageStorage node application issues

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions