4.31
alyssaxuu/screenity4.31Jun 2, 2026by chrislusf
AI Summary
This release focuses on S3 API stability and versioning improvements, introduces new admin interface capabilities like metadata export and inline viewing, and enhances volume server reliability with EC bitrot detection and Terraform support.
Key Highlights
- S3 API improvements including versioning fixes and bucket quota enforcement
- Admin server enhancements allowing metadata export and inline image/PDF viewing
- EC bitrot detection sidecars for volume server reliability
- Terraform support for VM-based SeaweedFS deployment
Breaking Changes
- Reject reserved bucket name 'filemeta'
- Return NoSuchVersion instead of NoSuchKey for a missing versionId
New Features
- Export file/folder metadata from the file browser
- View images and PDFs inline in the file browser
- Terraform support for VM-based SeaweedFS deployment
- EC bitrot detection sidecars
- Recover versioned reads when the .versions latest pointer is absent
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