4.31
parruda/swarm4.31Jun 2, 2026by chrislusf
AI Summary
SeaweedFS 4.31 improves S3 API compatibility, adds Terraform support for VM deployments, fixes volume server write stalling issues, and enhances EC bitrot detection.
Key Highlights
- S3 bucket quota enforcement and versioning improvements
- Terraform support for VM-based deployments
- Fix for volume max count dead zone stalling writes
- EC bitrot detection with per-shard checksum sidecars
New Features
- S3 reserved bucket name rejection
- S3 ETag compatibility with Hadoop
- Terraform VM deployment
- Volume max count fix
- EC sidecar protection
- Gzip error handling fix
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