This release adds 1 notable feature for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+10 more
ReleasePort's take
Moderate signalVersion 4.28 fixes several critical bugs across EC handling, S3 audit logging, and volume server stability.
Why it matters: These bugfixes eliminate crashes (e.g., shell volumeServer.evacuate panic), correct EC disk‑counting errors, surface previously hidden stat errors during idx scrub, and improve S3 request auditing—directly enhancing reliability for developers, SREs, and security engineers.
Summary
AI summaryBroad release touches ec, s3, audit, and s3/audit.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Add volume.rust toggle to Helm chart for Rust volume server. Add volume.rust toggle to Helm chart for Rust volume server. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Feature | Medium |
Rebuild lost EC index (.ecx) and .vif from local shards. Rebuild lost EC index (.ecx) and .vif from local shards. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Feature | Medium |
Accept volume‑server Ping targets on follower masters. Accept volume‑server Ping targets on follower masters. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Fix shell volumeServer.evacuate panic on nil volume. Fix shell volumeServer.evacuate panic on nil volume. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Keep sync_offset fresh while source is read-only in filer.sync. Keep sync_offset fresh while source is read-only in filer.sync. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Pack EC shards onto fewer disks instead of refusing the task. Pack EC shards onto fewer disks instead of refusing the task. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Correct multi-disk disk counting and EC balance shard attribution. Correct multi-disk disk counting and EC balance shard attribution. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Bring ec.encode worker and EC/volume helpers to parity with shell. Bring ec.encode worker and EC/volume helpers to parity with shell. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Account for zero‑sized volumes during volume scrubs. Account for zero‑sized volumes during volume scrubs. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Surface stat error on zero‑size idx scrub and mirror to Rust. Surface stat error on zero‑size idx scrub and mirror to Rust. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Don't disable SQL idle connection pool when filer is unconfigured. Don't disable SQL idle connection pool when filer is unconfigured. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Prevent filer crash from inconsistent skiplist ends. Prevent filer crash from inconsistent skiplist ends. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Restore executable bit on prebuilt weed-volume Docker image. Restore executable bit on prebuilt weed-volume Docker image. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Carry filer addresses as ServerAddress in admin plugin cluster context. Carry filer addresses as ServerAddress in admin plugin cluster context. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Return lock‑free snapshot from ActiveTransfers in filersink. Return lock‑free snapshot from ActiveTransfers in filersink. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Populate requester for GET/HEAD/IAM S3 operations. Populate requester for GET/HEAD/IAM S3 operations. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Sync IAM policies to advanced IAM Manager policy engine. Sync IAM policies to advanced IAM Manager policy engine. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Keep server‑side copy data within bucket collection. Keep server‑side copy data within bucket collection. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
List empty directories as directory markers. List empty directories as directory markers. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Cancel ListEntries stream in hasChildren to avoid leaks. Cancel ListEntries stream in hasChildren to avoid leaks. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
Fix fd leak in Samba DLM handoff test and promote xfail checks. Fix fd leak in Samba DLM handoff test and promote xfail checks. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Refactor | Medium |
Remove unused NameList/NameBatch implementation from skiplist. Remove unused NameList/NameBatch implementation from skiplist. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Other | Medium |
Make multi-disk EC balance disk-spread assertion deterministic. Make multi-disk EC balance disk-spread assertion deterministic. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Other | Medium |
Deterministically populate disks before multi-disk EC balance check. Deterministically populate disks before multi-disk EC balance check. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Other | Medium |
Fix race in TestReplicatedUploadSucceedsImmediatelyAfterAllocate. Fix race in TestReplicatedUploadSucceedsImmediatelyAfterAllocate. Source: llm_adapter@2026-05-22 Confidence: low |
— |
Full changelog
What's Changed
-
S3 API
- fix(s3/audit): populate requester for GET/HEAD/IAM operations by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9581
- fix(s3): sync IAM policies to advanced IAM Manager policy engine by @Mmx233 in https://github.com/seaweedfs/seaweedfs/pull/9577
- fix(s3): keep server-side copy data in the bucket collection by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9607
- fix(s3): list empty directories as directory markers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9615
- fix(s3api/list): cancel ListEntries stream in hasChildren by @MilanFun in https://github.com/seaweedfs/seaweedfs/pull/9617
-
Shell
-
fix(shell): volumeServer.evacuate no longer panics on a nil volume by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9587
-
Filer Sync
-
fix(filer.sync): keep sync_offset fresh while the source is read-only by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9589
-
Volume Server
- fix(ec): pack EC shards onto fewer disks instead of refusing the task by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9588
- fix(ec): correct multi-disk disk counting and EC balance shard attribution by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9594
- test(ec): make multi-disk EC balance disk-spread assertion deterministic by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9595
- fix(ec): bring ec.encode worker and EC/volume helpers to parity with shell by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9599
- test(ec): deterministically populate disks before multi-disk EC balance check by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9611
- Have volume scrubs account for zero-sized volumes. by @plisandro in https://github.com/seaweedfs/seaweedfs/pull/9609
- test(volume): fix race in TestReplicatedUploadSucceedsImmediatelyAfterAllocate by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9613
- fix(storage): surface stat error on zero-size idx scrub, mirror to rust by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9612
-
Filer
- fix(filer): don't disable the SQL idle connection pool when unconfigured by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9591
- fix(redis3): prevent filer crash from inconsistent skiplist ends by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9602
- chore(skiplist): remove unused NameList/NameBatch implementation by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9603
-
Misc
- Samba-over-FUSE integration test and distributed-lock handoff fixes by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9590
- test: fix fd leak in the Samba DLM handoff test (promote xfail checks) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9592
- feat(fix): rebuild lost EC index (.ecx) and .vif from local shards by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9596
-
Admin Server and Worker
- fix(admin): carry filer addresses as ServerAddress in plugin cluster context by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9600
-
FUSE Mount
- fix(filersink): return lock-free snapshot from ActiveTransfers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9604
-
Master
- master: accept volume-server Ping targets on follower masters by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9614
-
Docker, Helm Chart
- fix(docker): restore executable bit on prebuilt weed-volume by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9616
- feat(helm): add volume.rust toggle to run the Rust volume server by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9618
New Contributors
- @MilanFun made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/9617
Full Changelog: https://github.com/seaweedfs/seaweedfs/compare/4.27...4.28
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About seaweedfs
SeaweedFS is a distributed storage system for object storage (S3), file systems, and Iceberg tables, designed to handle billions of files with O(1) disk access and effortless horizontal scaling.
Related context
Related tools
Earlier breaking changes
- v4.24 Version 4.23 is unsafe with multiple disks when using erasure coding (EC).
Beta — feedback welcome: [email protected]