mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-09-13 03:24:19 +00:00
Both create a unique version/marker file plus an atomic latest-pointer flip — the same shape as versioned PutObject — so both now reuse FinalizeVersionedWrite instead of the distributed lock. finalizeCopyDestination (VersioningEnabled) and createDeleteMarker take an optional owner + condition; when the .versions owner is known they run the demote + pointer flip (and the precondition) atomically on that owner via routedVersionedFinalize, rolling back the version/marker file on failure and surfacing a precondition miss as 412. CopyObjectHandler and DeleteObjectHandler take the routed path for versioning-enabled destinations and skip the lock; suspended versioning, version-specific deletes, metadata-only self-copy, and the lifecycle marker path keep the existing lock-based path. No proto or filer changes — reuses the op from the versioned-PutObject PR.