4.34

lynx-family/lynx4.34Jun 15, 2026by chrislusf

AI Summary

SeaweedFS distributed file system update focusing on S3 API improvements including quota metrics, account-less identity handling, EC shard crash safety, and dashboard enhancements with sparklines and maintenance task configuration.

Key Highlights

  • S3 per-bucket quota and read-only state metrics
  • Account-less identities with distinct ownership
  • EC shard crash-safe journal fold and rebuild
  • Dashboard sparklines and maintenance task configuration
  • Volume tier move support across data centers

New Features

  • S3 per-bucket quota and read-only state metrics
  • S3 copy source path segment validation
  • Account-less identities with distinct ownership
  • STS sessions with distinct owner accounts
  • Admin maintenance tasks via admin.toml
  • Dashboard sparklines with trend visualization
  • EC shard crash-safe journal fold with fsync
  • Volume tier move support across data centers
  • Preserve volume data mtime across tier moves
  • Grafana dashboard overhaul for full metric coverage

Full Release Notes

## What's Changed
* S3
  * s3: export per-bucket quota and read-only state metrics by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9923
  * s3: validate copy source path segments by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9929
  * [s3] validate indirect filer path inputs by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9931
  * [s3]: preserve multipart copy checksums by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9948
  * s3: give account-less identities a distinct owner instead of admin by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9962
  * s3: give STS sessions a distinct owner account instead of admin by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9963
  * s3tables: scope management authorization to the caller's identity by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9961
  * s3: register account-less identities' synthesized account so ACL/owner ids resolve by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9971

* Misc
  * fix(tests): 32-bit build of EC e2e tests, type-check linux/386 in CI by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9922
  * ci: run weed tests on linux/386 by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9924
  * fix(util): ignore comment only sql input by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9933

* Shell
  * shell: volume.tier.move can move volumes between data centers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9925
  * shell: stop ec.encode/ec.rebuild from destroying live EC shards (no crash needed) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9939

* Admin Server
  * admin: configure maintenance tasks via admin.toml by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9926
  * admin: native at-a-glance trend sparklines on the dashboard by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9957
  * admin: fold dashboard sparklines into the existing cards (de-dup) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9964
  * admin: add connected Mount Clients page and dashboard section by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9968

* Volume Server
  * feat(storage): sweep leftover empty EC .dat stubs on volume server startup by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9927
  * fix(storage): never let an empty .dat delete healthy distributed EC shards by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9930
  * fix(ec): crash-safe ecx-journal fold and shard rebuild (fsync before publish, no short-read-as-success) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9938
  * fix(ec): never delete recoverable EC shards on startup/reconcile (the non-empty-.dat sibling of the stub bug) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9941
  * [volume] preserve volume data mtime across tier moves by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9947
  * fix(replication): verify-before-destroy in VolumeCopy, check.disk, and over-replication trim by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9943
  * fix(vacuum): crash-safe compaction commit with a durable .cpc marker, fsync-before-rename, and a reload fence by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9944
  * fix(tiering): never delete a shared remote object while replicas still reference it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9942
  * fix(ec): make ec.decode write-path crash-safe and atomic by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9949
  * fix(ec): persist EC source readonly mark and skip writable replicas on orphan cleanup by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9950
  * [volume] preserve compression state during replication by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9946
  * fix(ec): don't fabricate a stub .vif when mounting an EC volume by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9951
  * fix(ec): group orphan-source completeness by encode generation (topology encode_ts_ns) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9952
  * fix(ec): fence stale-worker EC shard cleanup by encode generation by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9953
  * fix(storage): delete/unmount every copy of a duplicate volume id by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9954
  * fix(ec): remove shared EC index only when no shard remains node-wide by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9955
  * fix(ec): recover EC shards with the volume's own ratio, not the build default by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9958
  * refactor(ec_balance): make the balance planner per-volume ratio-capable by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9960

* Metrics
  * metrics: overhaul Grafana dashboard for full metric coverage by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9956
  * metrics: guard time()-based dashboard panels against unset gauges by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9965
  * metrics: add per-bucket S3 panels and volume slot utilization to dashboard by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9969
  * filer: keep metadata-subscription send gauge fresh on idle heartbeat by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9966

* Helm Charts
  * [helm]: configure JWT expiration by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9940


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