4.31
lynx-family/lynx4.31Jun 2, 2026by chrislusf
AI Summary
Focuses on S3 versioning robustness, Terraform support, and EC bitrot detection.
Key Highlights
- s3: commit a versioned PutObject and its latest pointer in one transaction
- Add Terraform support for VM-based SeaweedFS deployment
- EC bitrot detection: per-shard checksum sidecars
New Features
- S3 versioning transaction commit
- Terraform VM support
- EC bitrot detection
Full Release Notes
## What's Changed * S3 * s3: short-circuit filer failover on ErrNotFound by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9748 * s3: return NoSuchVersion (not NoSuchKey) for a missing versionId by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9749 * s3: commit a versioned PutObject and its latest pointer in one transaction by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9756 * s3: reject reserved bucket name "filemeta" by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9760 * fix(s3api): Fix multipart upload ETag compatibility with Hadoop S3A by @phucnguyen261199 in https://github.com/seaweedfs/seaweedfs/pull/9772 * s3: auto-enforce bucket quota read-only both ways by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9774 * fix(s3): recover versioned reads when the .versions latest pointer is absent by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9782 * Admin Server and Worker * admin: export file/folder metadata from the file browser by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9750 * admin: view images and PDFs inline in the file browser by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9751 * admin: store file browser uploads in volumes, not inline by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9752 * Terraform * Add Terraform support for VM-based SeaweedFS deployment by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9754 * Volume Server * volume: fix maxVolumeCount dead zone that stalled writes on auto-sized disks by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9755 * EC bitrot detection: per-shard checksum sidecars by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9761 * EC bitrot follow-ups: protect destination sidecar on optional copy; cap sidecar block_size by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9763 * fix(http): handle invalid gzip stream errors by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9767 * volume: keep volume writable after a deletion-tail compaction by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9776 * fix(ec): resolve EC data-shard count from the volume's .vif on reboot by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9779 * fix(ec): pass per-volume data-shard count to the parity-shard split by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9781 * Shell * shell: warn in volume.list when a volume id spans collections by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9759 * shell: volume.fsck must not skip the system-log subtree by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9764 * Filer Sync * filer.sync: back off on transient upload errors by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9777 * filer.sync: repair a destination shorter than the source by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9778 * Filer * filer: name the read-only path in the write rejection by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9773 * grpc: don't tear down the shared master connection on a caller's own timeout by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9775 * Master * fix(topology): restore active count after vacuum recovery by @CodeRusher in https://github.com/seaweedfs/seaweedfs/pull/9770 * fix(master): notify clients after manual volume grow by @mneetika in https://github.com/seaweedfs/seaweedfs/pull/9656 * Misc * ci: parallelize the unified release-container build by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9783 * Rust Volume Server * fix(seaweed-volume): bound request body and stored-content expansion to prevent OOM under load by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9780 ## New Contributors * @phucnguyen261199 made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/9772 * @mneetika made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/9656 **Full Changelog**: https://github.com/seaweedfs/seaweedfs/compare/4.30...4.31