4.33

mkturkcan/DART4.33Jun 11, 2026by chrislusf

AI Summary

This release focuses on bug fixes across the S3 API, Filer operations, and Admin tools, including improvements to metadata replay and Elastic8 support.

Key Highlights

  • Enhanced S3 API with conditional handling and checksum trailer normalization.
  • Added object size distribution metrics and dashboard panels to the Filer.
  • Introduced Elastic8 filer store support.
  • Improved metadata-log replay performance and memory management.

New Features

  • Export full cluster volume list as JSON.
  • Object size distribution metric and dashboard panels.
  • Elastic8 filer store for Elasticsearch 8.

Full Release Notes

## What's Changed

* S3 API
  * fix(s3api): accept HTTP-date conditionals by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9863
  * fix(s3api): drop ancestor directory markers from prefixed ListObjectVersions by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9885
  * fix(s3api): clear stale object lock years by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9890
  * fix(s3api): normalize checksum trailer header names by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9905
  * fix(s3api): reject empty v4 signed header names by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9910

* Remote Cache
  * fix(remote): correct content and permissions when syncing/caching remote objects by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9879

* Filer Sync and Backup
  * Don't mangle filer paths with the OS separator on Windows by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9878
  * fix(filer.sync): guard batched events against nil EventNotification by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9877
  * fix(filer.backup): skip replay events whose source chunk was superseded or deleted by @kisow in https://github.com/seaweedfs/seaweedfs/pull/9886
  * fix(filer.sync): scope filesystem key sanitization to the local sink by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9894
  * fix(filer.sync): replicate a rename as an atomic move, not a no-op update by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9895

* Admin Server and Worker
  * feat(admin): export full cluster volume list as JSON by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9876
  * admin: pre-gzip embedded static assets, add cache headers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9918

* Misc
  * fix(util): return full uint64 randomness by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9864
  * fix(http): accept no content delete responses by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9893
  * ci: route Docker Hub pulls through a mirror to cut registry timeouts by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9904
  * ci(s3tables): stop Lakekeeper flaking on Docker Hub pull timeouts by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9920

* Rust Volume Server
  * fix(seaweed-volume): stop EC shard deletion from phantom .dat on restart by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9874

* Shell
  * fix(shell): move files into existing destination directories by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9887
  * Make shell command `ec.scrub` return shard details upon scrub failures in `LOCAL` mode. by @plisandro in https://github.com/seaweedfs/seaweedfs/pull/9913
  * `volume.scrub` and `ec.scrub` shell commands: make the display of scrub details optional. by @plisandro in https://github.com/seaweedfs/seaweedfs/pull/9911

* Filer
  * fix(mongodb): merge URI auth fields with username/password override by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9889
  * feat(filer): object size distribution metric and dashboard panels by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9902
  * Fix filer metadata-replay OOM under mount reconnect storms by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9901
  * Share decoded metadata-log entries across subscriber replays by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9903
  * Share metadata-log replays per chunk instead of per file by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9906
  * Bound the metadata-log flush queue by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9907
  * add elastic8 filer store for Elasticsearch 8 by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9916
  * log_buffer: stop dumping the whole log entry on callback errors by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9919
  * Cut per-subscriber replay decode and widen replay concurrency by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9917

* Volume Server
  * batch drain delta heartbeat messages by @giftz in https://github.com/seaweedfs/seaweedfs/pull/9914
  * fix(ec): don't mix EC shards from different encode runs by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9880


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