4.35

stalwartlabs/stalwart4.35Jun 22, 2026by chrislusf

AI Summary

This release prioritizes FUSE/Mount stability, addressing deadlocks and concurrent write issues. It also adds Prometheus metrics for replication operations and improves S3 performance for large remote objects.

Key Highlights

  • FUSE deadlock fixes and improved concurrent writeback pattern detection.
  • S3 performance improvements for large remote objects (TTFB).
  • Prometheus metrics added for replication and volume creation operations.
  • Removal of deprecated EC bitrot checksum flags.
  • Kafka topic auto-create race condition fix.

Breaking Changes

  • Removed `ec.bitrotChecksum` and `ec.bitrotBlockSizeMB` flags.

New Features

  • FUSE mount performance optimizations (group ID caching).
  • S3 streaming remote-cache wait timeout.
  • Prometheus metrics for storage operations.

Full Release Notes

## What's Changed
* FUSE
  * fix(command): preserve fuse option after writers by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9972
  * test: add FUSE database load/durability/perf benchmark by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9980
  * mount: tolerance-window write pattern detection for concurrent writeback by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9984
  * fix(mount): keep a deferred local create from vanishing when its dir is rebuilt by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9991
  * fix(mount): pin rebuild entries by their own inode, not inodeToPath by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9993
  * mount: fix deadlock reading an uncached remote-mounted file by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9995
  * mount: cache supplementary group IDs for non-root access performance by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10008
  * fix(mount): run entry invalidations off the meta-cache apply loop by @kisow in https://github.com/seaweedfs/seaweedfs/pull/10002
  * feat(mount): attach Content-MD5 to chunk uploads by @kisow in https://github.com/seaweedfs/seaweedfs/pull/10016

* Misc
  * security.toml: document WEED_ env override for jwt signing keys by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9981
  * SECURITY.md: require working repro and trust-boundary impact by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9990
  * mq(kafka): don't drop an existing topic when auto-create races by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9998
  * Fix typo in SeaweedFS Filer description by @dantetemplar in https://github.com/seaweedfs/seaweedfs/pull/10009
  * Logs typos by @m-sementsov in https://github.com/seaweedfs/seaweedfs/pull/10018
  * feat: add Prometheus metrics for replication operations by @rushikesh90 in https://github.com/seaweedfs/seaweedfs/pull/10006
  * install.sh: fix stale --version example (v3.93 -> 4.34) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10025
  * feat: add Prometheus metric for volume creation operations by @rushikesh90 in https://github.com/seaweedfs/seaweedfs/pull/10026
  * stats: define metric subsystems as constants by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10027

* Filer
  * filer: tolerance-window read pattern detection for concurrent readahead by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9983
  * filer: skip COLLATE "C" list fallback on CockroachDB by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10015

* Shell
  * shell: show remote storage name/key in volume.list output by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9987
  * fix(shell): return fs.verify topology errors by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9982

* Volume Server
  * storage: register tier backends at the binary composition root by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9989
  * volume: remove ec.bitrotChecksum and ec.bitrotBlockSizeMB flags by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10000
  * volume: validate remote S3 endpoints in FetchAndWriteNeedle (Rust) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10001
  * volume: detect phantom volumes held open as deleted FDs by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10011

* Master
  * use Leader() instead of MaybeLeader() in SendHeartbeat by @giftz in https://github.com/seaweedfs/seaweedfs/pull/10029

* S3 API
  * s3: bound streaming remote-cache wait so large cold GetObject returns 503, not a hang by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9988
  * s3api: add optional request interceptor to circuit breaker by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9994
  * s3: improve TTFB for large remote objects by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10010
  * fix(s3): verify SigV2 using percent-encoded path for Unicode object keys by @sergey-zinchenko in https://github.com/seaweedfs/seaweedfs/pull/10022

* Helm Charts
  * helm: reject emptyDir for volume idx, and rebuild a missing idx on restart by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10005

* Admin Server and Worker
  * admin: surface user inline policies in object store user details by @msk-psp in https://github.com/seaweedfs/seaweedfs/pull/10013

* Mini
  * mini: resolve admin credentials from security.toml and env vars by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10021

## New Contributors
* @dantetemplar made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10009
* @sergey-zinchenko made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10022

**Full Changelog**: https://github.com/seaweedfs/seaweedfs/compare/4.34...4.35