4.34

takahirom/arbigent4.34Jun 15, 2026by chrislusf

AI Summary

Focuses on S3 bucket metrics, validation, and extensive fixes for EC, volume server stability, and dashboard improvements.

Key Highlights

  • Per-bucket S3 quota and read-only state metrics
  • S3 path segment validation
  • EC crash-safe journal fold and shard rebuild
  • Dashboard sparklines and connected mount clients page

New Features

  • Admin maintenance tasks configuration via admin.toml
  • Volume tier moves between data centers
  • S3 indirect filer path validation
  • EC shard orphan cleanup improvements

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