4.31
mkturkcan/DART4.31Jun 2, 2026by chrislusf
AI Summary
This release focuses on enhancing S3 versioning capabilities, improving the admin UI for inline file viewing, and adding Terraform support for VM deployments. It also introduces per-shard checksum sidecars for EC bitrot detection and fixes various volume and shell stability issues.
Key Highlights
- Enhanced S3 versioning and bucket quota enforcement
- Admin UI improvements for inline image/PDF viewing
- Terraform support for VM-based SeaweedFS deployment
- EC bitrot detection with sidecar checksums
New Features
- S3 versioning transaction support
- Inline file viewing in admin browser
- Terraform VM deployment support
- EC sidecar protection and block size capping
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