mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-25 13:36:50 +00:00
fix(ecstore): migrate tier free versions during decommission
This commit is contained in:
@@ -102,10 +102,9 @@ pub const TRANSITION_PENDING: &str = "pending";
|
||||
/// delete paths the same obligation is also carried by a committed tier-journal
|
||||
/// entry; deletes without such an entry (for example a removed version whose
|
||||
/// transition state decodes as unknown) rely on this record alone until the
|
||||
/// worker removes it after a successful remote delete. Decommission does not
|
||||
/// preserve these semantics: its exact inventory keeps the records inline in
|
||||
/// `versions` and the migration loop treats them as ordinary delete markers —
|
||||
/// see docs/architecture/decommission-compatibility.md.
|
||||
/// worker removes it after a successful remote delete. Decommission preserves
|
||||
/// the record and its remote identity on the target pool before source cleanup
|
||||
/// — see docs/architecture/decommission-compatibility.md.
|
||||
pub const FREE_VERSION: &str = "free-version";
|
||||
|
||||
pub const TRANSITION_STATUS: &str = "transition-status";
|
||||
|
||||
@@ -2730,10 +2730,10 @@ impl MetaObject {
|
||||
/// identity so the lifecycle worker can issue the idempotent remote delete
|
||||
/// and only then remove the record; until then the recovery scan and the
|
||||
/// usage scanner keep re-enqueueing it. S3 and lifecycle deletes also
|
||||
/// persist a committed tier-journal entry for the same remote delete, so a
|
||||
/// record destroyed without its remote delete (as decommission does when it
|
||||
/// treats these records as ordinary delete markers) strands only the
|
||||
/// journal-less cases — see docs/architecture/decommission-compatibility.md.
|
||||
/// persist a committed tier-journal entry for the same remote delete. The
|
||||
/// decommission path copies this record unchanged before source cleanup,
|
||||
/// including when the transition state is unknown — see
|
||||
/// docs/architecture/decommission-compatibility.md.
|
||||
pub fn init_free_version(&self, fi: &FileInfo) -> Result<(FileMetaVersion, bool)> {
|
||||
if fi.skip_tier_free_version() {
|
||||
return Ok((FileMetaVersion::default(), false));
|
||||
|
||||
Reference in New Issue
Block a user