Files
seaweedfs/weed/s3api
Chris Lu 7519f68ff1 s3: route versioned MPU-complete + lifecycle markers off the DLM
Both flip the .versions latest pointer off the object-key lock, racing routed
versioned/suspended writes (the per-path entry lock and the distributed lock
don't serialize against each other).

- completeMultipartUpload (versioning enabled) now routes its latest-pointer
  update through routedVersionedFinalize on the object's owner, carrying the
  precondition so the filer evaluates it atomically under the per-path lock.
  The completion then takes no distributed lock at all (mirroring the versioned
  PutObject path); only object-lock, suspended versioning, unsupported
  preconditions, or a missing ring view fall back to the lock. Suspended MPU
  only writes the main object entry (last-writer-wins, benign) and is unchanged.
- The lifecycle expiration delete-marker (enabled and suspended) resolves the
  object owner and routes its marker pointer flip the same way.

Both fall back to the lock-based updateLatestVersionInDirectory when the owner
isn't known.
2026-05-23 11:04:30 -07:00
..
2026-01-28 14:34:07 -08:00
2026-02-20 18:40:47 -08:00
2025-07-28 02:49:43 -07:00

see https://blog.aqwari.net/xml-schema-go/

1. go get aqwari.net/xml/cmd/xsdgen
2. Add EncodingType element for ListBucketResult in AmazonS3.xsd
3. xsdgen -o s3api_xsd_generated.go -pkg s3api AmazonS3.xsd
4. Remove empty Grantee struct in s3api_xsd_generated.go
5. Remove xmlns: sed s'/http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\ //' s3api_xsd_generated.go