What's Changed
- filer: do not stall startup waiting out the leader-settle window by @chrislusf in #11972
- volume: drop stale index entries that resolve to a different needle by @chrislusf in #11948
- s3 lifecycle: route version-file writes to current-version expiration by @chrislusf in #11956
- s3: end a catalog-vended session with the access key it was vended for by @jatorre in #11945
- fuse integration: run posix suites on weed mini and allow allow_other mounts by @chrislusf in #11984
- ci: cancel superseded workflow runs on PR pushes by @chrislusf in #11979
- ci: build test binaries once, share them across shard jobs by @chrislusf in #11981
- ci: cache docker build layers for container_dev by @chrislusf in #11980
- ci: skip setup-go cache on self-hosted runners by @chrislusf in #11985
- ci: skip actions/cache on self-hosted runners by @chrislusf in #11986
- helm: fix bucket hook treating an existing bucket as missing by @bati-valensas in #11982
- test: stop EC integration tests from pinning default master port 9333 by @chrislusf in #11988
- test/fuse: fix cluster startup in the fuse test framework by @chrislusf in #11977
- shell: retry filer discovery until a filer registers by @chrislusf in #11994
- tests: pin weed mini admin ports and disable unused aux services by @chrislusf in #11997
- volume: also listen on localhost like other components by @chrislusf in #11995
- server: skip local unix sockets that cannot be bound by @chrislusf in #12000
- command: keep filer, s3, and sftp up when the local unix socket cannot bind by @chrislusf in #11999
- ci: gate go/java/python tool caches to github-hosted runners by @chrislusf in #12001
- master: cap writable volumes per collection via -maxWritableVolumes by @chrislusf in #11923
- s3: gate POST Object acl fields behind PutObjectAcl by @chrislusf in #11939
- iam: GetUserPolicy returns NoSuchEntity for a policy name the user does not have by @jayhemnani9910 in #11944
- ec.encode: require shard placement to meet -shardReplicaPlacement by @chrislusf in #11947
- ci: set up Go for CodeQL autobuild by @chrislusf in #12007
- test: raise mini-server startup wait from 30s to 90s in Makefiles by @chrislusf in #12005
- test: gofmt s3tables test files by @chrislusf in #12011
- s3: url-encode ListMultipartUploads results for encoding-type=url by @Tyagiquamar in #11998
- volume.fsck: run all filer-entry purges through the shared worker pool by @chrislusf in #11960
- ci: make docker registry and compose steps idempotent on self-hosted runners by @chrislusf in #12012
- filer: bootstrap a timestamp-less peer entry onto a missing local path by @chrislusf in #11975
- test: skip catalog client images that cannot execute on the host CPU by @chrislusf in #12014
- ci: install fuse3 when runners lack fusermount3 by @chrislusf in #12013
- docker: build RocksDB v11.1.2 for grocksdb v1.11.1 by @chrislusf in #12002
- filer.backup: process metadata events through the concurrent processor by @chrislusf in #11951
- operation: euthanize pooled upload conns that stall far below a fast host by @chrislusf in #12003
- filer.conf: merge fsync on presence like worm by @chrislusf in #11953
- iceberg maintenance: match percent-decoded keys when checking file references by @chrislusf in #11978
- test(s3 remote cache): wait for the master to list the filer before shell commands by @chrislusf in #12018
- ci: isolate S3 lifecycle mini from LAN clusters by @chrislusf in #12022
- test: handle unsupported catalog clients in S3 Tables CI by @chrislusf in #12023
- master: cap parallel vacuums per rack via master.vacuum.max_parallel_per_rack by @chrislusf in #11935
- filer.remote.sync: dispatch an update event by the side of the mount it touches instead of slicing the mount prefix off a path outside it by @jsas in #11958
- build(deps): bump github.com/go-chi/chi/v5 from 5.3.1 to 5.4.0 by @dependabot[bot] in #12004
- shell: retry filer discovery until master knows a filer by @chrislusf in #11989
- iceberg maintenance: a merged file with null row ids names no first_row_id by @jatorre in #11973
- ci: invoke pip via python -m in s3tests clone steps by @chrislusf in #12010
- s3api: support s3:RequestObjectTagKeys in bucket policies by @junkerderprovinz in #11993
- notification: named webhook targets for per-path event routing by @chrislusf in #11925
- release: digest-bound provenance and SBOM attestations for container images by @chrislusf in #12024
- s3api: write the null version's object-lock metadata to the plain entry by @chrislusf in #12033
- master: never auto-admit raft peers on a single-node configuration by @chrislusf in #12021
- s3: evaluate bucket CORS for path-style OPTIONS on the bucket root by @wleeaf in #12028
- topology: mark replica quarantined before recording the pair by @chrislusf in #11983
- iam/oidc: wrap the jti replay cache in its own type by @chrislusf in #12017
- filer: let NewChunkStreamReaderFromFiler fall back to the master on a cache miss by @niko4464 in #11964
- s3: allow up to 50 tags in a bucket tag set by @wleeaf in #12030
- volume: keep a below-minimum fsync batch open for stragglers by @chrislusf in #12016
- filer: match If-Match and If-None-Match against "*" and ETag lists by @jayhemnani9910 in #12026
- master: read the writable-volumes cap from master.toml by @chrislusf in #12009
- volume: check If-None-Match before If-Modified-Since and match ETag lists by @jayhemnani9910 in #12027
- topology: stop a stale duplicate-vid report from re-quarantining the survivor by @chrislusf in #12032
- s3: accept a self-copy that changes the storage class by @wleeaf in #12031
- feat: Free Volume Deadband (M) for EC shard placement by @CHEPURNOV-S-S in #12029
- ci: clean up stale FUSE mounts before running tests by @chrislusf in #12020
- mq/kafka: wait for a filer to register instead of panicking on an empty list by @pingqiu in #12019
- s3: make ListObjectsV2 continuation tokens round-trip XML-unsafe keys by @Tyagiquamar in #11996
- test(fuse): raise mini/filer and mount readiness waits to 90s by @chrislusf in #12037
- s3: fix wildcard matcher skipping '*' targets in policy patterns by @chrislusf in #12034
- filer.backup: retry a failed checkpoint read instead of replaying from the epoch by @AdzerKI in #12036
- remote_storage/s3: send only real object tags to the remote by @chrislusf in #12039
- ci: run s3-go-tests on remote_storage changes by @chrislusf in #12043
- shell: run volume.configure.replication in parallel per volume server by @junkerderprovinz in #12041
- helm: remove filer.redirectOnRead, which weed filer does not accept by @junkerderprovinz in #12040
- redis2: pipeline entry reads when listing a directory by @junkerderprovinz in #12042
- test: mismatched If-None-Match serves the object over If-Modified-Since by @chrislusf in #12045
- s3: authorize POST policy uploads through the shared object check by @chrislusf in #12047
- volume: overlap the local needle write with the replica fan-out by @chrislusf in #10074
- filer: fix prefixed listing when the resume point sorts below the prefix by @chrislusf in #12049
- test: bound trino container memory + dump logs when it exits before ready by @chrislusf in #12044
New Contributors
- @bati-valensas made their first contribution in #11982
- @wleeaf made their first contribution in #12028
- @niko4464 made their first contribution in #11964
Full Changelog: 4.49...4.50