mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-06-13 23:36:45 +03:00
8acf21e4d1
A suspended-versioning PUT writes the "null" version to the main object path, so it is a single-entry object write just like a non-versioned PUT — only the IsLatest-flag rewrite over existing versions differs, and that is best-effort bookkeeping (recoverable on the next list-versions resync). So route it on the object key like a normal PUT: putSuspendedVersioningObject now calls putToFiler without an afterCreate hook (letting the route-by-key path take it and skip the distributed lock), then runs updateIsLatestFlagsFor- SuspendedVersioning best-effort after the write instead of inside the lock. routedObjectOwner now excludes only versioning-*enabled* buckets (whose writes go to .versions) rather than all versioning-configured buckets, so suspended and unversioned writes — both targeting the main object path — resolve the same object-key owner and serialize on the same lock. Object-lock buckets still keep the lock path; suspended DELETE (delete null + create marker) stays multi-step on the lock.