Skip to content

seaweedfs

v4.32 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

Published 1mo Cloud Management
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

blob-storage cloud-drive distributed-file-system distributed-storage distributed-systems erasure-coding
+10 more
fuse hadoop-hdfs hdfs kubernetes s3 posix replication s3-storage seaweedfs tiered-file-system

Affected surfaces

auth rbac

Summary

AI summary

Updates affect S3 API, IAM, Filer, Volume Server, Admin, Master, sFTPd, and Helm charts with fixes and new capabilities.

Changes in this release

Security High

Hot-reload JWT signing keys on SIGHUP for improved security.

Hot-reload JWT signing keys on SIGHUP for improved security.

Source: llm_adapter@2026-06-08

Confidence: high

Feature Medium

Reload in‑flight maintenance tasks on admin startup instead of discarding them.

Reload in‑flight maintenance tasks on admin startup instead of discarding them.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Feature Medium

Keep dynamic IAM policies live when -iam.config flag is enabled in S3 API.

Keep dynamic IAM policies live when -iam.config flag is enabled in S3 API.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Feature Low

Adds -initialSnapshot flag to re‑seed filer backup destination.

Adds -initialSnapshot flag to re‑seed filer backup destination.

Source: llm_adapter@2026-06-08

Confidence: high

Feature Low

Support SSH user certificates signed by a trusted CA in sFTPd.

Support SSH user certificates signed by a trusted CA in sFTPd.

Source: llm_adapter@2026-06-08

Confidence: high

Feature Low

Detect disk health on volume servers via CheckDisk implementation.

Detect disk health on volume servers via CheckDisk implementation.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Feature Low

Treat co‑located volume servers as a single fault domain during balancing and allocation.

Treat co‑located volume servers as a single fault domain during balancing and allocation.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Feature Low

Display S3 server instances under Cluster view in admin UI.

Display S3 server instances under Cluster view in admin UI.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Feature Low

Make lifecycle TTL fast‑path per‑bucket opt‑in via configuration flag.

Make lifecycle TTL fast‑path per‑bucket opt‑in via configuration flag.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Feature Low

List directory key objects within versioned bucket version listings in S3 API.

List directory key objects within versioned bucket version listings in S3 API.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Performance Medium

Spread EC shards evenly across machines instead of concentrating them.

Spread EC shards evenly across machines instead of concentrating them.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Performance Medium

Route object reads in S3 API to the key's owner filer for efficiency.

Route object reads in S3 API to the key's owner filer for efficiency.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Performance Medium

Standardize ETag calculation in S3 copy handlers for consistency.

Standardize ETag calculation in S3 copy handlers for consistency.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Performance Low

Rescan .versions when the cached latest pointer is missing during list operations in S3 API.

Rescan .versions when the cached latest pointer is missing during list operations in S3 API.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Bugfix Medium

Check delete request errors before authentication in HTTP layer.

Check delete request errors before authentication in HTTP layer.

Source: llm_adapter@2026-06-08

Confidence: high

Bugfix Medium

Make scheduler pruning lane‑aware in admin server.

Make scheduler pruning lane‑aware in admin server.

Source: llm_adapter@2026-06-08

Confidence: high

Bugfix Medium

Authorize DeleteObjects per key to match object‑scoped policies in S3 API.

Authorize DeleteObjects per key to match object‑scoped policies in S3 API.

Source: llm_adapter@2026-06-08

Confidence: high

Bugfix Medium

Keep ListBucket resource ARN at bucket level in S3 API.

Keep ListBucket resource ARN at bucket level in S3 API.

Source: llm_adapter@2026-06-08

Confidence: high

Bugfix Medium

Prevent directory cache from becoming stranded when eviction races rebuild in FUSE mount.

Prevent directory cache from becoming stranded when eviction races rebuild in FUSE mount.

Source: llm_adapter@2026-06-08

Confidence: high

Bugfix Medium

Implement CreatePolicyVersion for managed policies in IAM.

Implement CreatePolicyVersion for managed policies in IAM.

Source: llm_adapter@2026-06-08

Confidence: high

Bugfix Medium

Return a valid user ARN from CreateUser and GetUser in IAM.

Return a valid user ARN from CreateUser and GetUser in IAM.

Source: llm_adapter@2026-06-08

Confidence: high

Bugfix Medium

Verify shard landed on destination before deleting source in EC balance operation.

Verify shard landed on destination before deleting source in EC balance operation.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Bugfix Medium

Replicate RECOMPUTE_LATEST pointer updates to peer filers for consistency.

Replicate RECOMPUTE_LATEST pointer updates to peer filers for consistency.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Bugfix Medium

Collapse suspended‑versioning delete operations onto a single null marker for efficiency.

Collapse suspended‑versioning delete operations onto a single null marker for efficiency.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Bugfix Low

Use discovered file content type for needle operations.

Use discovered file content type for needle operations.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Bugfix Low

Set -dataDir default to "." so maintenance task state persists across restarts in admin.

Set -dataDir default to "." so maintenance task state persists across restarts in admin.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Bugfix Low

Report lifecycle job success to admin via JobCompleted message.

Report lifecycle job success to admin via JobCompleted message.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Bugfix Low

Defer handling of a recently‑unreachable owner filer that is also the current one.

Defer handling of a recently‑unreachable owner filer that is also the current one.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Bugfix Low

Return BucketAlreadyOwnedByYou error when recreating an owned bucket via S3 API.

Return BucketAlreadyOwnedByYou error when recreating an owned bucket via S3 API.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Refactor Low

Remove ec.balance from the default admin script configuration.

Remove ec.balance from the default admin script configuration.

Source: granite4.1:30b@2026-06-08-audit

Confidence: high

Full changelog

What's Changed

  • Misc

    • fix(http): check delete request errors before auth by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9784
    • chore(weed/storage/needle): prune unused test functions by @alrs in https://github.com/seaweedfs/seaweedfs/pull/9812
    • [test] update docker image for s3test by @kmlebedev in https://github.com/seaweedfs/seaweedfs/pull/9811
    • security: hot-reload JWT signing keys on SIGHUP by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9826
    • ip.bind: bind outbound connections to the configured address by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9834
    • s3: actually bind outbound connections when -ip.bind is set by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9849
    • operation: index VidCache by map instead of slice by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9853
    • rust release: fix large-disk/normal binary overwrite + publish md5 checksums by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9862
  • Volume Server

    • [CheckDisk]: implement disk health detection by @MilanFun in https://github.com/seaweedfs/seaweedfs/pull/9560
    • fix(needle): use discovered file content type by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9851
    • ec placement: spread EC shards evenly across machines, not onto the lowest-id one by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9855
    • Treat co-located volume servers as one fault domain when balancing and allocating by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9854
    • ec.balance: verify shard landed on destination before deleting the source by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9858
  • Admin Server and Worker

    • fix(admin): make scheduler pruning lane-aware by @ahalaun in https://github.com/seaweedfs/seaweedfs/pull/9790
    • admin: show S3 servers under Cluster by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9847
    • worker: drop ec.balance from the default admin script by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9848
    • admin: default -dataDir to "." so maintenance task state persists across restarts by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9856
    • admin/maintenance: reload in-flight tasks on startup instead of discarding them by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9857
  • S3 API

    • fix(s3/lifecycle): report success to admin via JobCompleted by @ahalaun in https://github.com/seaweedfs/seaweedfs/pull/9787
    • fix(s3api): authorize DeleteObjects per key so object-scoped policies match by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9793
    • fix(s3api): keep ListBucket resource ARN at bucket level by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9792
    • test(s3/iam): scope ListBucket isolation via s3:prefix condition by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9805
    • fix(iam): implement CreatePolicyVersion for managed policies by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9795
    • fix(iam): return a valid user ARN from CreateUser and GetUser by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9794
    • s3: route object reads to the key's owner filer by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9806
    • s3: defer a recently-unreachable owner that is also the current filer by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9808
    • s3: keep dynamic IAM live when -iam.config is set by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9817
    • s3: return BucketAlreadyOwnedByYou when recreating your own bucket by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9822
    • fix(s3api): standardize ETag calculation in copy handlers by @phucnguyen261199 in https://github.com/seaweedfs/seaweedfs/pull/9829
    • s3: make lifecycle TTL fast path per-bucket opt-in by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9825
    • filer: replicate RECOMPUTE_LATEST pointer updates to peers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9840
    • s3: rescan .versions when the cached latest pointer is missing on a list by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9841
    • s3: list directory key objects in versioned bucket version listings by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9842
    • test(s3): deref Object.Size in versioned list assertion by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9843
    • test(s3): make the whole versioning suite pass and gate it in CI by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9844
    • s3: collapse suspended-versioning deletes onto one null marker by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9845
    • test(s3): address review feedback on the versioning suite by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9846
    • fix(s3api): require space in v2 auth prefix by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9852
    • fix(s3api): reject zero default retention years by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9860
  • FUSE mount

    • fix(mount): don't strand a directory cached-but-empty when an eviction races a rebuild by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9791
  • Filer

    • fix(log_buffer): re-check buffer before bailing with ResumeFromDiskError by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9804
    • filer: bound TraverseBfsMetadata memory by queuing directory paths by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9814
    • filer: stream persisted log files when serving metadata subscriptions by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9821
    • filer: keep S3 list order byte-lexicographic regardless of SQL name column collation by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9824
    • fix: handle meta backup offset errors safely by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9818
    • feat(filer.backup): -initialSnapshot re-seeds a reinitialized destination by @kisow in https://github.com/seaweedfs/seaweedfs/pull/9828
  • sFTPd

    • sftpd: support SSH user certificates signed by a trusted CA by @FabianHardt in https://github.com/seaweedfs/seaweedfs/pull/9815
  • Master

    • fix(master): advance maxVolumeId when registering EC shards by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9827
    • master: grow rack-spanning volumes once per DC, capped at copy_N by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9835
    • vacuum: compact a read-only volume when an explicit volumeId is given by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9861
  • Helm Charts

    • fix(helm): suspend bucket versioning for YAML bool false by @lexfrei in https://github.com/seaweedfs/seaweedfs/pull/9836
    • fix(helm): deduplicate all-in-one extra environment variables by @lexfrei in https://github.com/seaweedfs/seaweedfs/pull/9837

New Contributors

  • @ahalaun made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/9790
  • @FabianHardt made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/9815
  • @lexfrei made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/9836

Full Changelog: https://github.com/seaweedfs/seaweedfs/compare/4.31...4.32

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

Track seaweedfs

Get notified when new releases ship.

Sign up free

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.

All releases →

Related context

Earlier breaking changes

  • v4.24 Version 4.23 is unsafe with multiple disks when using erasure coding (EC).

Beta — feedback welcome: [email protected]