4.36
TrafficGuard/typedai4.36Jun 25, 2026by chrislusf
AI Summary
A comprehensive patch release introducing significant updates to S3 and Iceberg support, alongside security hardening, Filer improvements, and stability fixes for Volume and Mount components.
Key Highlights
- Enhanced S3 API with SigV4 sorting, Range rejection, AES256 encryption preservation, and config file reload support.
- Comprehensive Iceberg support including multi-table transactions, views, table rename, and namespace property updates.
- Improved security with STS AssumeRole by trust policy, role chaining deny enforcement, and IAM propagation.
- Filer and Mount (FUSE) improvements including JWT minting, proxyChunkId propagation, and deadlock fixes.
New Features
- S3 API enhancements (encryption, sorting, error handling).
- Iceberg support (transactions, views, table operations).
- Security hardening (STS, IAM).
- Filer and Mount reliability improvements.
- Volume/EC stability and balancing.
Full Release Notes
## What's Changed S3 / S3 API - s3api: sort repeated SigV4 query values — @7y-9 (#10031) - s3api: reject malformed Range offsets — @guankai (#10034) - s3api: preserve requested AES256 copy encryption — @7y-9 (#10049) - s3api: preserve equals signs in tag values — @guankai (#10058) - s3api: apply static config file updates on reload — @chrislusf (#10096) - s3: keep a file promoted to a directory retrievable as an object — @chrislusf (#10070) - s3: skip 503 when client disconnects during remote cache wait — @chrislusf (#10071) - s3: avoid reading upload body when writing JSON errors — @qzhello (#10073) - s3: propagate IAM changes from standalone weed s3 to peer pods — @chrislusf (#10095) - s3: replicate by fanning out from the gateway to every holder — @chrislusf (#10078) Iceberg - iceberg: support namespace property updates — @chrislusf (#10052) - iceberg: return 400 for invalid namespace/table names — @chrislusf (#10051) - iceberg: support table register — @chrislusf (#10067) - iceberg: support multi-table transaction commit — @chrislusf (#10066) - iceberg: support views — @chrislusf (#10069) - iceberg: support table rename — @chrislusf (#10068) - iceberg: detect table-exists through the wrapped manager error — @chrislusf (#10075) S3 Tables - s3tables: fix create-after-rename overwriting the renamed table — @chrislusf (#10091) - s3tables: allow hyphens in namespace and table names — @chrislusf (#10093) STS / IAM / Security - sts: authorize AssumeRole by the role's trust policy — @chrislusf (#10097) - sts: enforce session-policy explicit deny during role chaining — @chrislusf (#10103) - security: add BearerPrefix constant for Authorization headers — @chrislusf (#10101) Filer - filer: propagate proxyChunkId query params to volume server — @MorezMartin (#10036) - filer: apply -filer.disk default to metadata log assigns — @jk2lx (#10080) - filer.backup: repair chunk-incomplete and stale destination entries — @kisow (#10082) - filer: mint volume read JWT when proxying chunk reads — @chrislusf (#10100) Mount (FUSE) - mount: don't hang close() when a writer is killed during flush — @chrislusf (#10090) - mount: skip redundant permission checks under default_permissions — @chrislusf (#10089) - mount: confirm an empty directory rebuild before caching it — @chrislusf (#10092) - mount: don't fail close() on a benign FUSE interrupt — @chrislusf (#10102) - fix: enforce XATTR_REPLACE semantics in setxattr — @shiftraodd (#10059) Volume / EC / Storage - feat: support marking volumes by collection — @7y-9 (#9585) - Volume balancing by step — @m-sementsov (#10035) - Fix stale cache fallback for empty volume locations in wdclient — @os-pradipbabar (#10081) - chunk_cache: close data/index files on initialization error — @AlexArtemis (#10057) Shell (EC tooling) - shell: support batched EC encode and multi-volume selection in ec.encode — @qzhello (#10030) - shell: exclude failed EC shard copies from rebuild recoverability gate — @qzhello (#10043) - shell ec.rebuild: allow targeting rebuild to specific volume IDs — @plisandro (#10087) Worker - worker: don't leak task goroutines on forced shutdown — @chrislusf (#10062) PostgreSQL - postgres: resolve startup message length type mismatch and uint underflow OOM risk — @198wmj (#10065) - postgres: prevent uint32 underflow & OOM in message parsing — @sshhan (#10099) Util / Core - util: support IPv6 host port parsing — @guankai (#10046) - util: trim minFreeSpace values before parsing — @guankai (#10083) - util/http: lazily init the global HTTP client to fix admin metrics nil panic — @chrislusf (#10044) - benchmark: close CPU profile file handle after profiling — @AlexArtemis (#10048) Error-handling cleanups - fix: use %w instead of %v in fmt.Errorf to preserve error chain — @DanielWu-star (#10047) - refactor: 将 fmt.Errorf 中的 %v 替换为 %w 以保留错误链 — @aCuteBegCinner (#10050) - fix: resolve inconsistent usage of error variables — @mumingl (#10060) Dependencies - bump cassandra-gocql-driver to v2.1.2 — @chrislusf (#10033) - bump ydb-go-sdk/v3 3.139.5 → 3.141.0 — @dependabot (#10041) - bump modernc.org/sqlite 1.49.1 → 1.53.0 — @dependabot (#10040) - bump reedsolomon 1.14.0 → 1.14.1 — @dependabot (#10039) - bump testcontainers-go 0.40.0 → 0.43.0 — @dependabot (#10042) - bump iceberg-go 0.5.0 → 0.6.0 — @dependabot (#10038) - bump jackson-databind 2.18.6 → 2.22.0 (test/java/spark) — @dependabot (#10094) - deps: replace deleted tyler-smith/go-bip39 with cosmos fork — @chrislusf (#10088) Build / CI / Telemetry - build(deps): bump actions/checkout 6 → 7 — @dependabot (#10037) - telemetry: sync go.mod/go.sum with parent module deps — @chrislusf (#10045) ## New Contributors * @guankai made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10034 * @DanielWu-star made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10047 * @AlexArtemis made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10048 * @aCuteBegCinner made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10050 * @mumingl made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10060 * @shiftraodd made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10059 * @198wmj made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10065 * @jk2lx made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10080 * @sshhan made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10099 **Full Changelog**: https://github.com/seaweedfs/seaweedfs/compare/4.35...4.36