10.0.1
QuestDB 10.0.1 is a maintenance release that builds on 10.0.0 with improvements across SQL, QWP, Live Views, DECIMAL, storage, and the Web Console. Expanded fuzz, fault-injection, and concurrency coverage strengthens a number of less-common execution and failure paths.
The release also improves high-cardinality window queries and Live View refreshes, streams eligible ordered UNION ALL queries without a full sort, reduces idle-worker allocation on JDK 24+, and bundles Web Console 2.0.3.
For any questions or feedback, please join us on Slack or on Discourse.
See also our prettier release notes page.
- QWP table-update caching now follows table lifecycle and schema changes more closely, including
DROP/recreate, rename, and column-type changes. Durable acknowledgement accounting also covers transactions committed at the append-time row threshold. #7383, #7484 - Partition squash and POSTING-index lifecycle paths gain additional concurrency and I/O handling, improving behavior around open partitions, concurrent writers, and rollback. #7487, #7485, #7382
- Column type conversion now reports low-disk-space failures cleanly, and metadata compatibility improves for tables created before QuestDB 6.1. #7537, #7476
Compatible window functions over the same PARTITION BY key can now share one map and one probe per row. The largest gains occur at high key cardinality: in the PR benchmark, a three-function bounded window over one million keys ran about 2.1x faster and retained 65 MiB less native memory on the cached path. The optimization is controlled by the reloadable cairo.sql.window.map.fusion.enabled setting. #7515
The same change substantially reduces Live View refresh, seal, restart, and transient-memory costs. In the reported 3.8-million-account benchmark, per-batch refresh fell from 4.43 seconds to 0.48 seconds and restart from 79.7 seconds to 3.86 seconds. Live Views can also project aliases and scalar expressions around window functions, with broader coverage for bounded RANGE frames, extreme timestamps, replay, and NOCACHE symbols.
Additional hardening makes view startup, routine base-table DDL, and concurrent refresh behavior more consistent. #7465, #7486, #7512
Expanded DECIMAL coverage improves arithmetic and scale handling, NULL consistency, casts, bind variables, WAL replay, ILP, CSV import/export, Parquet filtering, and storage. #7452
ALTER TABLE ... ALTER COLUMN ... TYPE now converts between DECIMAL and FLOAT/DOUBLE in both directions. For Parquet-backed data, QuestDB converts the affected partitions to native format first.
- Ordered
UNION ALLcan stream through a merge operator instead of sorting. Eligible full scans ran about 8-9x faster in the PR benchmark, whileLIMITqueries can stop without materializing and sorting the full union. Branches must expose compatible designated timestamps and scan order. #7348 - An all-SYMBOL
UNIONorUNION ALLnow returnsSYMBOL. HTTP metadata and CTAS preserve the type instead of widening it to STRING; PGWire continues to expose both through the VARCHAR OID. #7397 - Scalar subqueries, indexed
LATEST ON, lateral aggregates, large GROUP BY maps, VARCHAR date parsing, andSHOW CREATE DATABASEsubqueries gain broader plan and edge-case coverage. #7388, #7481, #7432, #7434, #7417, #7384 - PGWire result framing now handles additional ARRAY, IPv4, and GEOHASH format combinations. ILP TCP authentication handling is more robust for malformed input, and
current_user()/session_user()report the authenticated principal. #7469, #7488, #7273 - Web Console 2.0.3 adds light/dark themes, notebook-level auto-refresh with per-cell overrides, improved grid sizing and editor settings, and OIDC and terminology fixes. #7458, #7533
- feat(sql): return SYMBOL from a UNION over symbol columns by @glasstiger in #7397
- perf(core): reduce GC pressure from idle workers on JDK 24+ by @kafka1991 in #7459
- perf(sql): speed up window queries and fix wrong results in windows and live views by @puzpuzpuz in #7515
- perf(sql): stream ordered UNION ALL without sorting by @brunocalza in #7348
- fix(core): load view definitions before the engine publishes READY by @RaphDal in #7465
- fix(sql): fix scalar subquery predicates and timestamp interval pruning by @nwoolmer in #7388
- fix(core): fix crash when reading tables created before QuestDB 6.1 by @nwoolmer in #7476
- fix(pgwire): fix queries hanging until the connection times out by @jerrinot in #7469
- fix(sql): rebind bind variable in deferred indexed LATEST ON by @nwoolmer in #7481
- fix(sql): handle conservative ASCII hints in VARCHAR date parsing by @jerrinot in #7417
- fix(core): fix live views turning invalid after routine base table DDL by @bluestreak01 in #7486
- fix(qwp): reject oversized table counts by @jerrinot in #7493
- fix(core): fix covering-index reads on Windows by @glasstiger in #7499
- fix(ilp): stop ILP TCP authentication failures escaping as unhandled errors by @bluestreak01 in #7488
- fix(core): prevent invalid native-memory writes by @jerrinot in #7453
- chore(core): harden decimal type handling by @RaphDal in #7452
- fix(core): stop POSTING index close() truncating a region another writer published by @bluestreak01 in #7485
- fix(core): prevent false live view invalidation during concurrent refresh by @bluestreak01 in #7512
- fix(core): fix table suspension after a range replace removes its last partition by @puzpuzpuz in #7380
- fix(sql): fix NULL results for count expressions in LEFT JOIN LATERAL by @kafka1991 in #7432
- fix(core): signal restore cancellation promptly on shutdown by @jovfer in #7361
- fix(qwp): fix silent row loss after DROP in the qwpudp table-update cache by @nwoolmer in #7383
- fix(core): fix incorrect query results and premature memory-limit errors in large queries by @puzpuzpuz in #7434
- fix(core): stop partition squash losing var-column data on the open partition by @bluestreak01 in #7487
- fix(sql): fix filters on SHOW CREATE DATABASE subqueries by @nwoolmer in #7384
- fix(qwp): fix durable acks issued before the WAL upload is confirmed by @bluestreak01 in #7484
- fix(core): fix the web console showing "admin" instead of the authenticated user by @glasstiger in #7273
- fix(core): fix a POSTING index crash on rollback after a value-file I/O error by @puzpuzpuz in #7382
- fix(core): fix crash on column type conversion under low disk space by @ideoma in #7537
- chore(ui): upgrade web console to 2.0.2 by @emrberk in #7458
- chore(ui): upgrade web console to 2.0.3 by @emrberk in #7533
Full Changelog: 10.0.0...10.0.1
4.44
- admin: keep the copy confirmation in front of the access key modal by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10856
- admin: regenerate the gzipped static mirror by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10859
- iceberg: stop compaction from corrupting dictionary-encoded columns by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10857
- S3: optionally serve remote-mounted objects from remote when the local read fails by @Koalk in https://github.com/seaweedfs/seaweedfs/pull/10837
- volume: cut idle memory at high volume counts by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10861
- test: take a table through its whole life, for Iceberg and Lance by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10862
- filer: stop aggregated metadata subscribers from spinning on a peer watermark hold by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10863
- master: let the leader admit a master that starts with no raft state by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10865
- test: read Lance tables from DuckDB by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10866
- release: cut the whole release from the version bump workflow by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10870
- S3: source config credentials from the environment, and let the chart point at an existing secret by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10868
- volume: stop reporting read-only volumes that are no longer here by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10867
- test: wait for the master to register the volume servers before failover tests run by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10871
- admin: add bucket lifecycle rule editing by @mat813 in https://github.com/seaweedfs/seaweedfs/pull/10860
- helm: render the mysql secret and env only for the mysql filer store by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10872
- test: drive the Lance namespace with Spark by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10864
- filer: keep the TUS sub-chunks that already landed when a write fails by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10876
- @mat813 made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10860
Full Changelog: https://github.com/seaweedfs/seaweedfs/compare/4.43...4.44
4.43
- s3: stop unrouted bucket subresources from being answered with a listing by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10814
- S3: stamp the gateway's own uid/gid on PutObject and copy entries by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10844
- s3: place multipart part chunks by the destination object's storage rule by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10845
- s3: allow-unordered is a listing parameter, not an unimplemented subresource by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10846
- filer: use bind variables for request-controlled values in the arangodb store by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10795
- filer: close the empty-folder race by checking after each mutation by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10799
- filer: stop remote.unmount from deleting the remote objects by @Koalk in https://github.com/seaweedfs/seaweedfs/pull/10811
- fix(filer): bound aggregated metadata reads by peer watermarks by @kisow in https://github.com/seaweedfs/seaweedfs/pull/10803
- Recover from a dead volume server on the mount read path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10798
- mount: drop consumed entries when reading a directory through by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10802
- mount: reuse the listed entry's path instead of rebuilding it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10817
- mount: fold an inode's single link into its entry by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10818
- mount: move the inode table when a rename arrives from the cluster by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10822
- mount: index directory state by path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10827
- mount: discard a path-cache insert that raced a purge by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10842
- Re-look-up a chunk's locations as soon as they all fail by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10800
- Give the WebDav chunk reader a bounded, invalidatable location cache by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10801
- Guard the gcs credential path in FetchAndWriteNeedle like the other backends by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10796
- volume: forward fsync=true to replicas in ReplicatedWrite by @sunchao6106 in https://github.com/seaweedfs/seaweedfs/pull/10805
- topology: refresh oversized mark on every heartbeat by @sunchao6106 in https://github.com/seaweedfs/seaweedfs/pull/10829
- rust: honor fsync on the volume server write path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10816
- rust: stop writing when a durable write's index flush fails by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10825
- Lance catalog, and a Rust plugin worker to maintain it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10841
- seaweed-worker: serve health, readiness and metrics by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10848
- metrics: graph the plugin workers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10849
- mini: state the format of a -tableBucket, do not infer it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10851
- Give the local Unix socket gRPC transport room to breathe by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10824
- Add monitoring label to filer servicemonitor by @slimes28 in https://github.com/seaweedfs/seaweedfs/pull/10835
- Fix what the Go 1.26 language bump breaks by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10794
- go 1.26 by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10797
- fix(test/s3/versioning): dropped test error by @alrs in https://github.com/seaweedfs/seaweedfs/pull/10813
- test(s3/versioning): read the whole version body instead of one Read by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10815
- test: drive the Lance namespace with LanceDB by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10850
- ci: fall through to another Ubuntu mirror when one is unreachable by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10828
- ci: install the runner's own packages through the mirror fallback too by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10831
- ci: build protoc into the crate instead of installing it per job by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10830
- ci: call the apt helper from the workflow's working directory by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10832
- ci: stop installing FUSE headers nothing links against by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10840
- readme: fold RustFS into the MinIO comparison by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10788
- build(deps): bump golang.org/x/crypto from 0.54.0 to 0.55.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10786
- build(deps): bump github.com/aws/aws-sdk-go-v2 from 1.43.4 to 1.43.5 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10787
- build(deps): bump google.golang.org/api from 0.289.0 to 0.293.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10792
- build(deps): bump golang.org/x/net from 0.57.0 to 0.58.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10790
- build(deps): bump github.com/rabbitmq/amqp091-go from 1.11.0 to 1.13.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10791
- build(deps): bump go.etcd.io/etcd/client/v3 from 3.6.12 to 3.7.1 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10789
- @Koalk made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10811
- @sunchao6106 made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10805
- @slimes28 made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10835
Full Changelog: https://github.com/seaweedfs/seaweedfs/compare/4.42...4.43
v0.8.0-pre.7
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tursodatabase/turso/releases/download/v0.8.0-pre.7/turso_cli-installer.sh | sh
powershell -ExecutionPolicy Bypass -c "irm https://github.com/tursodatabase/turso/releases/download/v0.8.0-pre.7/turso_cli-installer.ps1 | iex"
| File | Platform | Checksum |
|---|---|---|
| turso_cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| turso_cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| turso_cli-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| turso_cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| turso_cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| turso_cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo tursodatabase/turso
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
RustFS 1.0.0-rc.3 (rc)
- fix(site-replication): lift a rejoined site's restarted edit counter over stale marks by @reatang in https://github.com/rustfs/rustfs/pull/6119
- fix(ci): pin Docker images to release source by @overtrue in https://github.com/rustfs/rustfs/pull/6121
- test(utils): allow ephemeral port reuse by @overtrue in https://github.com/rustfs/rustfs/pull/6122
- fix(scanner): add context to corrupt metadata logs by @marshawcoco in https://github.com/rustfs/rustfs/pull/6099
- feat(ecstore): report inline early-stop miss reasons by @houseme in https://github.com/rustfs/rustfs/pull/6134
- feat(table-catalog): finalize Iceberg REST behavior by @marshawcoco in https://github.com/rustfs/rustfs/pull/6072
- fix(admin): serialize replication metrics in minio-go wire shapes by @reatang in https://github.com/rustfs/rustfs/pull/6127
- fix(site-replication): merge incoming ILM expiry documents instead of overwriting by @reatang in https://github.com/rustfs/rustfs/pull/6130
- fix(admin): stream madmin ReplicationMRF documents from /v3/replication/mrf by @reatang in https://github.com/rustfs/rustfs/pull/6126
- fix(replication): transport and persist LWW timestamps for tag, retention, and legal hold by @reatang in https://github.com/rustfs/rustfs/pull/6129
- perf(ecstore): defer pending inline data shards by @houseme in https://github.com/rustfs/rustfs/pull/6137
- fix(ecstore): classify remote inline early-stop misses by @overtrue in https://github.com/rustfs/rustfs/pull/6136
- fix(ecstore): overlap metacache reader deadlines by @marshawcoco in https://github.com/rustfs/rustfs/pull/6098
- fix(heal): preserve timeout budget across retries by @marshawcoco in https://github.com/rustfs/rustfs/pull/6101
- fix(ecstore): mint bucket-target ARNs in the madmin arn:minio partition by @reatang in https://github.com/rustfs/rustfs/pull/6128
- chore(ecstore): drop the client dead_code blanket by @overtrue in https://github.com/rustfs/rustfs/pull/6138
- chore(deps): update flake.lock by @houseme in https://github.com/rustfs/rustfs/pull/6142
- fix(storage): skip table guards for multipart parts by @overtrue in https://github.com/rustfs/rustfs/pull/6143
- perf(ecstore): enable inline data read early-stop by default by @houseme in https://github.com/rustfs/rustfs/pull/6140
- chore(ecstore): drop the disk dead_code blanket by @overtrue in https://github.com/rustfs/rustfs/pull/6139
- chore(ecstore): drop the set_disk dead_code blanket by @overtrue in https://github.com/rustfs/rustfs/pull/6141
- chore(ecstore): drop the bucket dead_code blanket by @overtrue in https://github.com/rustfs/rustfs/pull/6147
- test(interop): let the MinIO fixture lab build from registry mirrors by @overtrue in https://github.com/rustfs/rustfs/pull/6148
- chore: drop the remaining product-code dead_code blankets by @overtrue in https://github.com/rustfs/rustfs/pull/6149
- fix(ecstore): silence two dead_code warnings left on main by @overtrue in https://github.com/rustfs/rustfs/pull/6153
- chore(ecstore): annotate the two dead fns the blanket removals missed by @overtrue in https://github.com/rustfs/rustfs/pull/6152
- test(tier): pin the compressed transitioned read against its stored bytes by @overtrue in https://github.com/rustfs/rustfs/pull/6151
- test(ecstore): add metadata slow-tail fault hook by @houseme in https://github.com/rustfs/rustfs/pull/6150
- feat(ecstore): default bounded metadata fanout by @houseme in https://github.com/rustfs/rustfs/pull/6156
- fix(table-catalog): assign fresh schema IDs on create by @marshawcoco in https://github.com/rustfs/rustfs/pull/6146
- fix(scanner): canonicalize temp_dir for drive field assertion on macOS by @overtrue in https://github.com/rustfs/rustfs/pull/6159
- chore(protocols): drop 43 no-op dead_code allows from swift by @overtrue in https://github.com/rustfs/rustfs/pull/6157
- refactor(rustfs): move module switches below the layer boundary by @overtrue in https://github.com/rustfs/rustfs/pull/6154
- fix(ecstore): resolve nine unused bindings in set_disk write and heal paths by @overtrue in https://github.com/rustfs/rustfs/pull/6158
- fix(table-catalog): prevent object catalog lock reentry by @marshawcoco in https://github.com/rustfs/rustfs/pull/6144
- ci(arch): ratchet ecstore module-level lint blankets by @overtrue in https://github.com/rustfs/rustfs/pull/6155
- perf(io-metrics): avoid get handoff label allocations by @houseme in https://github.com/rustfs/rustfs/pull/6160
- perf(get): avoid memory body stream wrapper by @houseme in https://github.com/rustfs/rustfs/pull/6163
- chore(obs): adjudicate 19 bare dead_code allows by @overtrue in https://github.com/rustfs/rustfs/pull/6162
- chore: adjudicate 19 bare dead_code allows across six leaf crates by @overtrue in https://github.com/rustfs/rustfs/pull/6161
- feat(site-replication): drain the retry queue from the reconcile tick by @reatang in https://github.com/rustfs/rustfs/pull/6131
- fix(kms): resolve Vault auth from the environment at startup and add Kubernetes auth by @reatang in https://github.com/rustfs/rustfs/pull/6095
- feat(ecstore): pin bitrot algorithms with a startup self-test (HS-11) by @houseme in https://github.com/rustfs/rustfs/pull/6165
- feat(madmin): add a SigV4-signed admin client for heal and scanner APIs (HS-05) by @houseme in https://github.com/rustfs/rustfs/pull/6166
- docs(ecstore): fix bitrot comment typo by @houseme in https://github.com/rustfs/rustfs/pull/6168
- fix(site-replication): admit only verifiable peer-edit fences by @reatang in https://github.com/rustfs/rustfs/pull/6123
- feat(scanner): expose prefix-level bucket usage via admin API (HS-08) by @houseme in https://github.com/rustfs/rustfs/pull/6171
- feat(helm): add TLSRoute passthrough support for gateway api by @majinghe in https://github.com/rustfs/rustfs/pull/6169
- chore(ecstore): adjudicate 32 bare dead_code allows by @overtrue in https://github.com/rustfs/rustfs/pull/6173
- feat(heal): add progress and trace observability by @houseme in https://github.com/rustfs/rustfs/pull/6179
- feat(scanner): emit excess alerts as S3 notification events (HS-04) by @houseme in https://github.com/rustfs/rustfs/pull/6176
- fix(ecstore): describe peer bucket RPC failures with no details by @overtrue in https://github.com/rustfs/rustfs/pull/6190
- test(heal): lock heal vs delete/overwrite race invariants (HS-12) by @houseme in https://github.com/rustfs/rustfs/pull/6183
- chore(deps): refresh cargo dependencies by @houseme in https://github.com/rustfs/rustfs/pull/6198
- feat(storage): add default-off PUT admission gate by @houseme in https://github.com/rustfs/rustfs/pull/6197
- refactor(admin): route kms management auth through shared gate by @overtrue in https://github.com/rustfs/rustfs/pull/6194
- chore(storage): drop dead io-schedule metrics and helpers by @overtrue in https://github.com/rustfs/rustfs/pull/6199
- feat(heal): wire MRF intents with durable repair journal (HS-01) by @houseme in https://github.com/rustfs/rustfs/pull/6189
- chore: adjudicate 26 bare dead_code allows across five crates by @overtrue in https://github.com/rustfs/rustfs/pull/6187
- chore(storage): drop dead backpressure and lock-optimizer wrappers by @overtrue in https://github.com/rustfs/rustfs/pull/6195
- fix(ecstore): give peer REST failures op and bucket context by @overtrue in https://github.com/rustfs/rustfs/pull/6200
- ci(package): auto-trigger DEB/RPM packaging on releases and upload to GitHub release assets by @majinghe in https://github.com/rustfs/rustfs/pull/6202
- refactor: import x-amz-checksum header names from the shared constants by @overtrue in https://github.com/rustfs/rustfs/pull/6193
- fix(admin): classify missing kms config by error variant by @overtrue in https://github.com/rustfs/rustfs/pull/6196
- fix(ecstore): resume remote shard reads once by @cxymds in https://github.com/rustfs/rustfs/pull/6091
- fix(lock): reap expired local lease guards by @cxymds in https://github.com/rustfs/rustfs/pull/6094
- fix(ecstore): single-flight remote disk recovery by @cxymds in https://github.com/rustfs/rustfs/pull/6096
- feat(heal): incremental status cursors and typed overlap policy (HS-06) by @houseme in https://github.com/rustfs/rustfs/pull/6206
- chore(io-core): drop eight zero-consumer modules by @overtrue in https://github.com/rustfs/rustfs/pull/6201
- fix(deps): record heal's bytes and crc-fast in the lockfile by @overtrue in https://github.com/rustfs/rustfs/pull/6211
- test(e2e): drop 187 no-op serial markers from the three densest e2e suites by @overtrue in https://github.com/rustfs/rustfs/pull/6209
- feat(ecstore): instrument rename sync tail metrics by @houseme in https://github.com/rustfs/rustfs/pull/6205
- chore(zip): trim the unused extract and create surface by @overtrue in https://github.com/rustfs/rustfs/pull/6210
- test(lifecycle,scanner): drop 47 no-op #[serial] markers (backlog#1846 T1) by @overtrue in https://github.com/rustfs/rustfs/pull/6213
- test(admin): replace a source-text guard with a behavior test by @overtrue in https://github.com/rustfs/rustfs/pull/6212
- feat(app): add opt-in small GET body once path by @houseme in https://github.com/rustfs/rustfs/pull/6216
- test(io-metrics): assert record helper emissions; fix census heuristic by @overtrue in https://github.com/rustfs/rustfs/pull/6217
- feat(replication): split oversized hot-path functions, proxy unreplicated reads, and fail SSE-C passthrough closed by @reatang in https://github.com/rustfs/rustfs/pull/6170
- test(kms): move the Vault KV2 doc guard into check_fips_wording.sh by @overtrue in https://github.com/rustfs/rustfs/pull/6215
- test(e2e): pin bounded physical reads for compressed multipart range GETs by @reatang in https://github.com/rustfs/rustfs/pull/6167
- chore(deps): update s3s to upstream main by @GatewayJ in https://github.com/rustfs/rustfs/pull/6203
- perf(ecstore): validate local IO paths with openat2 by @houseme in https://github.com/rustfs/rustfs/pull/6221
- fix(e2e): import serial test attribute by @houseme in https://github.com/rustfs/rustfs/pull/6222
- fix(package): declare /etc/default/rustfs as a deb conffile by @majinghe in https://github.com/rustfs/rustfs/pull/6220
- perf(get): emit accept-ranges with static header by @houseme in https://github.com/rustfs/rustfs/pull/6225
- fix(e2e): add missing serial_test import in replication_extension_test by @overtrue in https://github.com/rustfs/rustfs/pull/6224
- feat(ecstore): add default-off dst dir fsync group commit by @houseme in https://github.com/rustfs/rustfs/pull/6226
- docs(architecture): describe io-core by its surviving surface by @overtrue in https://github.com/rustfs/rustfs/pull/6227
- fix(ecstore): group inline dst dir fsync by @houseme in https://github.com/rustfs/rustfs/pull/6228
- fix(sse): read objects that MinIO encrypted by @overtrue in https://github.com/rustfs/rustfs/pull/6191
- fix(ecstore): make the data-usage cache load actually retry by @overtrue in https://github.com/rustfs/rustfs/pull/6229
- test(heal): cover privileged mount readiness by @houseme in https://github.com/rustfs/rustfs/pull/6231
- perf(server): skip output layer work on common GET paths by @houseme in https://github.com/rustfs/rustfs/pull/6232
- test(e2e): fold eleven post-object accept cases into one table-driven test by @overtrue in https://github.com/rustfs/rustfs/pull/6207
- fix(ecstore): classify a missing data-usage cache by the error that arrives by @overtrue in https://github.com/rustfs/rustfs/pull/6233
- fix(package): write release checksum entries with GitHub asset names by @majinghe in https://github.com/rustfs/rustfs/pull/6234
- test(io-metrics): assert what the remaining smoke tests only called by @overtrue in https://github.com/rustfs/rustfs/pull/6238
- refactor(data-usage): own SizeSummary once, with the scanner's semantics by @overtrue in https://github.com/rustfs/rustfs/pull/6237
- test(crypto): replace the one-file key scan with a repo-wide guard by @overtrue in https://github.com/rustfs/rustfs/pull/6246
- test(io-schedule): drop 24 no-op serial markers from the IO scheduler unit tests by @overtrue in https://github.com/rustfs/rustfs/pull/6243
- test(ecstore): assert the error conversions, and stop the census over-reporting by @overtrue in https://github.com/rustfs/rustfs/pull/6241
- test(e2e): drop 79 no-op serial markers from six more suites by @overtrue in https://github.com/rustfs/rustfs/pull/6239
- fix(admin): report refreshed lock lease TTLs by @cxymds in https://github.com/rustfs/rustfs/pull/6230
- refactor(app): resolve the bucket default SSE in one place by @overtrue in https://github.com/rustfs/rustfs/pull/6236
- fix(site-replication): clear pending_remove on join, surface failures by @reatang in https://github.com/rustfs/rustfs/pull/6244
- test(audit,heal): assert three more smoke tests by @overtrue in https://github.com/rustfs/rustfs/pull/6248
- docs(scanner): record heal/scanner MinIO parity decisions (backlog#1878 HS-14/16/18) by @houseme in https://github.com/rustfs/rustfs/pull/6250
- test(crypto): replace the one-file key scan with a repo-wide guard by @overtrue in https://github.com/rustfs/rustfs/pull/6255
- chore(rustfs): adjudicate all 73 bare dead_code allows by @overtrue in https://github.com/rustfs/rustfs/pull/6254
- refactor(heal,scanner): clean up dead heal/scanner code, flags, and metrics (HS-09/10/19/20) by @houseme in https://github.com/rustfs/rustfs/pull/6256
- refactor(admin): route plugin handler auth through authorize_admin_request by @overtrue in https://github.com/rustfs/rustfs/pull/6247
- docs(operations): land the heal/scanner MinIO audit baseline with closure results (backlog#1862) by @houseme in https://github.com/rustfs/rustfs/pull/6258
- test(lifecycle): cover noncurrent marker cleanup cascade by @cxymds in https://github.com/rustfs/rustfs/pull/6252
- docs(operations): add an English counterpart of the heal/scanner audit baseline by @houseme in https://github.com/rustfs/rustfs/pull/6261
- feat(ecstore): expose rename sync tail metrics by @houseme in https://github.com/rustfs/rustfs/pull/6257
- chore(rustfs): adjudicate the remaining 36 bare dead_code allows by @overtrue in https://github.com/rustfs/rustfs/pull/6259
- refactor(sse): keep one bucket-default algorithm mapping for every writer by @overtrue in https://github.com/rustfs/rustfs/pull/6251
- feat(io-metrics): attribute ReadVersion RPC stages by @houseme in https://github.com/rustfs/rustfs/pull/6262
- fix(lock): reject stale lease snapshots by @cxymds in https://github.com/rustfs/rustfs/pull/6249
- docs(operations): restore the truncated tail of the English audit baseline by @houseme in https://github.com/rustfs/rustfs/pull/6268
- feat(helm): add istio gateway class support by @majinghe in https://github.com/rustfs/rustfs/pull/6264
- fix(metrics): remove duplicate scanner counter producers by @marshawcoco in https://github.com/rustfs/rustfs/pull/6245
- docs(admin): pin two authorization semantics against a dedup rewrite by @overtrue in https://github.com/rustfs/rustfs/pull/6279
- chore(protocols): narrow the SessionDiag blanket to its one unread field by @overtrue in https://github.com/rustfs/rustfs/pull/6266
- refactor(heal): remove the dead MRF heal-type path by @houseme in https://github.com/rustfs/rustfs/pull/6275
- fix(scripts): stop the assertless-test census truncating bodies at string braces by @overtrue in https://github.com/rustfs/rustfs/pull/6280
- fix(admin): pass the real RemoteAddr so aws:SourceIp reaches policy evaluation by @overtrue in https://github.com/rustfs/rustfs/pull/6273
- fix(madmin): send background-heal status over POST by @houseme in https://github.com/rustfs/rustfs/pull/6270
- chore(common): drop dead rule helpers and the s3s dependency by @houseme in https://github.com/rustfs/rustfs/pull/6271
- fix(heal): stop O(window) memmove in the heal result window by @houseme in https://github.com/rustfs/rustfs/pull/6272
- perf(scanner): cut per-object allocations in the scan hot path by @houseme in https://github.com/rustfs/rustfs/pull/6274
- refactor(admin): route observability handler auth through the shared gate by @overtrue in https://github.com/rustfs/rustfs/pull/6263
- fix(ecstore): classify decommission stage failures by type, not by message by @overtrue in https://github.com/rustfs/rustfs/pull/6269
- feat(heal,scanner): best-effort repaired notices from the MRF consumer by @houseme in https://github.com/rustfs/rustfs/pull/6283
- perf(heal,scanner): single-flight MRF producers per detection event by @houseme in https://github.com/rustfs/rustfs/pull/6282
- chore: adjudicate the last 18 bare dead_code allows in the library crates by @overtrue in https://github.com/rustfs/rustfs/pull/6265
- feat(connect): add device identity store and registration proof by @overtrue in https://github.com/rustfs/rustfs/pull/6267
- fix(get): name the failing object on mid-stream GET body failures by @reatang in https://github.com/rustfs/rustfs/pull/6284
- refactor(scanner): split remote_scanner.rs into stream child module by @houseme in https://github.com/rustfs/rustfs/pull/6289
- refactor(heal): split resume.rs into focused child modules by @houseme in https://github.com/rustfs/rustfs/pull/6290
- refactor(scanner): split scanner_io.rs into child modules by @houseme in https://github.com/rustfs/rustfs/pull/6294
- refactor(scanner): split data_usage_define persistence and tests by @houseme in https://github.com/rustfs/rustfs/pull/6292
- chore(deps): bump datafusion to 55.0.0 by @houseme in https://github.com/rustfs/rustfs/pull/6288
- refactor(heal): split task.rs per heal kind by @houseme in https://github.com/rustfs/rustfs/pull/6293
- feat(ecstore): batch small file fdatasync commits by @houseme in https://github.com/rustfs/rustfs/pull/6297
- fix(tier): recover multi-committed mutation intents by @cxymds in https://github.com/rustfs/rustfs/pull/6296
- feat(ecstore): expose fdatasync group wait metrics by @houseme in https://github.com/rustfs/rustfs/pull/6299
- fix(lifecycle): safely expire all object versions by @cxymds in https://github.com/rustfs/rustfs/pull/6291
- test(ecstore): pin rename quorum tail visibility by @houseme in https://github.com/rustfs/rustfs/pull/6301
- refactor(scanner): split scanner_folder item actions and ledger by @houseme in https://github.com/rustfs/rustfs/pull/6302
- refactor(heal): split manager.rs queue/scheduler/scan children by @houseme in https://github.com/rustfs/rustfs/pull/6303
- perf(server): cache HTTP metric handles by @houseme in https://github.com/rustfs/rustfs/pull/6304
- refactor(scanner): split scanner.rs cycle/leadership/persist children by @houseme in https://github.com/rustfs/rustfs/pull/6305
- feat(ecstore): add default-off rename early ack probe by @houseme in https://github.com/rustfs/rustfs/pull/6306
- perf(heal): trim scanner and heal queue hot paths by @houseme in https://github.com/rustfs/rustfs/pull/6307
- fix(heal): emit MRF repair notices on completion by @houseme in https://github.com/rustfs/rustfs/pull/6309
- perf(heal): reduce scheduler skip heap churn by @houseme in https://github.com/rustfs/rustfs/pull/6311
- feat(ecstore): observe put commit lock wait by @houseme in https://github.com/rustfs/rustfs/pull/6310
- chore(release): prepare 1.0.0-rc.3 by @overtrue in https://github.com/rustfs/rustfs/pull/6308
- feat(obs): complete metric dimension coverage by @houseme in https://github.com/rustfs/rustfs/pull/6314
- refactor(heal): prune statistics label helpers by @houseme in https://github.com/rustfs/rustfs/pull/6312
- feat(ecstore): bound put commit lock admission by @houseme in https://github.com/rustfs/rustfs/pull/6315
- fix(scanner): honor explicit cycle cadence by @marshawcoco in https://github.com/rustfs/rustfs/pull/6313
- fix(webdav): allow bucket-scoped root listings by @GatewayJ in https://github.com/rustfs/rustfs/pull/6298
- test(obs): add metric dimension smoke harness by @houseme in https://github.com/rustfs/rustfs/pull/6316
- perf(io-metrics): cache read version metric handles by @houseme in https://github.com/rustfs/rustfs/pull/6317
- perf(scanner): reduce per-object allocation churn by @houseme in https://github.com/rustfs/rustfs/pull/6318
- fix: resolve release-blocking integration failures by @overtrue in https://github.com/rustfs/rustfs/pull/6320
- test: stabilize release-blocking full E2E checks by @overtrue in https://github.com/rustfs/rustfs/pull/6322
- feat(ecstore): observe PUT commit lock admission by @houseme in https://github.com/rustfs/rustfs/pull/6319
- docs(agents): run adversarial review before pre-pr by @cxymds in https://github.com/rustfs/rustfs/pull/6325
- fix(lifecycle): honor bucket default retention by @marshawcoco in https://github.com/rustfs/rustfs/pull/6324
Full Changelog: https://github.com/rustfs/rustfs/compare/1.0.0-rc.2...1.0.0-rc.3
RustFS 1.0.0-rc.3-preview.2 (preview)
- fix(site-replication): lift a rejoined site's restarted edit counter over stale marks by @reatang in https://github.com/rustfs/rustfs/pull/6119
- fix(ci): pin Docker images to release source by @overtrue in https://github.com/rustfs/rustfs/pull/6121
- test(utils): allow ephemeral port reuse by @overtrue in https://github.com/rustfs/rustfs/pull/6122
- fix(scanner): add context to corrupt metadata logs by @marshawcoco in https://github.com/rustfs/rustfs/pull/6099
- feat(ecstore): report inline early-stop miss reasons by @houseme in https://github.com/rustfs/rustfs/pull/6134
- feat(table-catalog): finalize Iceberg REST behavior by @marshawcoco in https://github.com/rustfs/rustfs/pull/6072
- fix(admin): serialize replication metrics in minio-go wire shapes by @reatang in https://github.com/rustfs/rustfs/pull/6127
- fix(site-replication): merge incoming ILM expiry documents instead of overwriting by @reatang in https://github.com/rustfs/rustfs/pull/6130
- fix(admin): stream madmin ReplicationMRF documents from /v3/replication/mrf by @reatang in https://github.com/rustfs/rustfs/pull/6126
- fix(replication): transport and persist LWW timestamps for tag, retention, and legal hold by @reatang in https://github.com/rustfs/rustfs/pull/6129
- perf(ecstore): defer pending inline data shards by @houseme in https://github.com/rustfs/rustfs/pull/6137
- fix(ecstore): classify remote inline early-stop misses by @overtrue in https://github.com/rustfs/rustfs/pull/6136
- fix(ecstore): overlap metacache reader deadlines by @marshawcoco in https://github.com/rustfs/rustfs/pull/6098
- fix(heal): preserve timeout budget across retries by @marshawcoco in https://github.com/rustfs/rustfs/pull/6101
- fix(ecstore): mint bucket-target ARNs in the madmin arn:minio partition by @reatang in https://github.com/rustfs/rustfs/pull/6128
- chore(ecstore): drop the client dead_code blanket by @overtrue in https://github.com/rustfs/rustfs/pull/6138
- chore(deps): update flake.lock by @houseme in https://github.com/rustfs/rustfs/pull/6142
- fix(storage): skip table guards for multipart parts by @overtrue in https://github.com/rustfs/rustfs/pull/6143
- perf(ecstore): enable inline data read early-stop by default by @houseme in https://github.com/rustfs/rustfs/pull/6140
- chore(ecstore): drop the disk dead_code blanket by @overtrue in https://github.com/rustfs/rustfs/pull/6139
- chore(ecstore): drop the set_disk dead_code blanket by @overtrue in https://github.com/rustfs/rustfs/pull/6141
- chore(ecstore): drop the bucket dead_code blanket by @overtrue in https://github.com/rustfs/rustfs/pull/6147
- test(interop): let the MinIO fixture lab build from registry mirrors by @overtrue in https://github.com/rustfs/rustfs/pull/6148
- chore: drop the remaining product-code dead_code blankets by @overtrue in https://github.com/rustfs/rustfs/pull/6149
- fix(ecstore): silence two dead_code warnings left on main by @overtrue in https://github.com/rustfs/rustfs/pull/6153
- chore(ecstore): annotate the two dead fns the blanket removals missed by @overtrue in https://github.com/rustfs/rustfs/pull/6152
- test(tier): pin the compressed transitioned read against its stored bytes by @overtrue in https://github.com/rustfs/rustfs/pull/6151
- test(ecstore): add metadata slow-tail fault hook by @houseme in https://github.com/rustfs/rustfs/pull/6150
- feat(ecstore): default bounded metadata fanout by @houseme in https://github.com/rustfs/rustfs/pull/6156
- fix(table-catalog): assign fresh schema IDs on create by @marshawcoco in https://github.com/rustfs/rustfs/pull/6146
- fix(scanner): canonicalize temp_dir for drive field assertion on macOS by @overtrue in https://github.com/rustfs/rustfs/pull/6159
- chore(protocols): drop 43 no-op dead_code allows from swift by @overtrue in https://github.com/rustfs/rustfs/pull/6157
- refactor(rustfs): move module switches below the layer boundary by @overtrue in https://github.com/rustfs/rustfs/pull/6154
- fix(ecstore): resolve nine unused bindings in set_disk write and heal paths by @overtrue in https://github.com/rustfs/rustfs/pull/6158
- fix(table-catalog): prevent object catalog lock reentry by @marshawcoco in https://github.com/rustfs/rustfs/pull/6144
- ci(arch): ratchet ecstore module-level lint blankets by @overtrue in https://github.com/rustfs/rustfs/pull/6155
- perf(io-metrics): avoid get handoff label allocations by @houseme in https://github.com/rustfs/rustfs/pull/6160
- perf(get): avoid memory body stream wrapper by @houseme in https://github.com/rustfs/rustfs/pull/6163
- chore(obs): adjudicate 19 bare dead_code allows by @overtrue in https://github.com/rustfs/rustfs/pull/6162
- chore: adjudicate 19 bare dead_code allows across six leaf crates by @overtrue in https://github.com/rustfs/rustfs/pull/6161
- feat(site-replication): drain the retry queue from the reconcile tick by @reatang in https://github.com/rustfs/rustfs/pull/6131
- fix(kms): resolve Vault auth from the environment at startup and add Kubernetes auth by @reatang in https://github.com/rustfs/rustfs/pull/6095
- feat(ecstore): pin bitrot algorithms with a startup self-test (HS-11) by @houseme in https://github.com/rustfs/rustfs/pull/6165
- feat(madmin): add a SigV4-signed admin client for heal and scanner APIs (HS-05) by @houseme in https://github.com/rustfs/rustfs/pull/6166
- docs(ecstore): fix bitrot comment typo by @houseme in https://github.com/rustfs/rustfs/pull/6168
- fix(site-replication): admit only verifiable peer-edit fences by @reatang in https://github.com/rustfs/rustfs/pull/6123
- feat(scanner): expose prefix-level bucket usage via admin API (HS-08) by @houseme in https://github.com/rustfs/rustfs/pull/6171
- feat(helm): add TLSRoute passthrough support for gateway api by @majinghe in https://github.com/rustfs/rustfs/pull/6169
- chore(ecstore): adjudicate 32 bare dead_code allows by @overtrue in https://github.com/rustfs/rustfs/pull/6173
- feat(heal): add progress and trace observability by @houseme in https://github.com/rustfs/rustfs/pull/6179
- feat(scanner): emit excess alerts as S3 notification events (HS-04) by @houseme in https://github.com/rustfs/rustfs/pull/6176
- fix(ecstore): describe peer bucket RPC failures with no details by @overtrue in https://github.com/rustfs/rustfs/pull/6190
- test(heal): lock heal vs delete/overwrite race invariants (HS-12) by @houseme in https://github.com/rustfs/rustfs/pull/6183
- chore(deps): refresh cargo dependencies by @houseme in https://github.com/rustfs/rustfs/pull/6198
- feat(storage): add default-off PUT admission gate by @houseme in https://github.com/rustfs/rustfs/pull/6197
- refactor(admin): route kms management auth through shared gate by @overtrue in https://github.com/rustfs/rustfs/pull/6194
- chore(storage): drop dead io-schedule metrics and helpers by @overtrue in https://github.com/rustfs/rustfs/pull/6199
- feat(heal): wire MRF intents with durable repair journal (HS-01) by @houseme in https://github.com/rustfs/rustfs/pull/6189
- chore: adjudicate 26 bare dead_code allows across five crates by @overtrue in https://github.com/rustfs/rustfs/pull/6187
- chore(storage): drop dead backpressure and lock-optimizer wrappers by @overtrue in https://github.com/rustfs/rustfs/pull/6195
- fix(ecstore): give peer REST failures op and bucket context by @overtrue in https://github.com/rustfs/rustfs/pull/6200
- ci(package): auto-trigger DEB/RPM packaging on releases and upload to GitHub release assets by @majinghe in https://github.com/rustfs/rustfs/pull/6202
- refactor: import x-amz-checksum header names from the shared constants by @overtrue in https://github.com/rustfs/rustfs/pull/6193
- fix(admin): classify missing kms config by error variant by @overtrue in https://github.com/rustfs/rustfs/pull/6196
- fix(ecstore): resume remote shard reads once by @cxymds in https://github.com/rustfs/rustfs/pull/6091
- fix(lock): reap expired local lease guards by @cxymds in https://github.com/rustfs/rustfs/pull/6094
- fix(ecstore): single-flight remote disk recovery by @cxymds in https://github.com/rustfs/rustfs/pull/6096
- feat(heal): incremental status cursors and typed overlap policy (HS-06) by @houseme in https://github.com/rustfs/rustfs/pull/6206
- chore(io-core): drop eight zero-consumer modules by @overtrue in https://github.com/rustfs/rustfs/pull/6201
- fix(deps): record heal's bytes and crc-fast in the lockfile by @overtrue in https://github.com/rustfs/rustfs/pull/6211
- test(e2e): drop 187 no-op serial markers from the three densest e2e suites by @overtrue in https://github.com/rustfs/rustfs/pull/6209
- feat(ecstore): instrument rename sync tail metrics by @houseme in https://github.com/rustfs/rustfs/pull/6205
- chore(zip): trim the unused extract and create surface by @overtrue in https://github.com/rustfs/rustfs/pull/6210
- test(lifecycle,scanner): drop 47 no-op #[serial] markers (backlog#1846 T1) by @overtrue in https://github.com/rustfs/rustfs/pull/6213
- test(admin): replace a source-text guard with a behavior test by @overtrue in https://github.com/rustfs/rustfs/pull/6212
- feat(app): add opt-in small GET body once path by @houseme in https://github.com/rustfs/rustfs/pull/6216
- test(io-metrics): assert record helper emissions; fix census heuristic by @overtrue in https://github.com/rustfs/rustfs/pull/6217
- feat(replication): split oversized hot-path functions, proxy unreplicated reads, and fail SSE-C passthrough closed by @reatang in https://github.com/rustfs/rustfs/pull/6170
- test(kms): move the Vault KV2 doc guard into check_fips_wording.sh by @overtrue in https://github.com/rustfs/rustfs/pull/6215
- test(e2e): pin bounded physical reads for compressed multipart range GETs by @reatang in https://github.com/rustfs/rustfs/pull/6167
- chore(deps): update s3s to upstream main by @GatewayJ in https://github.com/rustfs/rustfs/pull/6203
- perf(ecstore): validate local IO paths with openat2 by @houseme in https://github.com/rustfs/rustfs/pull/6221
- fix(e2e): import serial test attribute by @houseme in https://github.com/rustfs/rustfs/pull/6222
- fix(package): declare /etc/default/rustfs as a deb conffile by @majinghe in https://github.com/rustfs/rustfs/pull/6220
- perf(get): emit accept-ranges with static header by @houseme in https://github.com/rustfs/rustfs/pull/6225
- fix(e2e): add missing serial_test import in replication_extension_test by @overtrue in https://github.com/rustfs/rustfs/pull/6224
- feat(ecstore): add default-off dst dir fsync group commit by @houseme in https://github.com/rustfs/rustfs/pull/6226
- docs(architecture): describe io-core by its surviving surface by @overtrue in https://github.com/rustfs/rustfs/pull/6227
- fix(ecstore): group inline dst dir fsync by @houseme in https://github.com/rustfs/rustfs/pull/6228
- fix(sse): read objects that MinIO encrypted by @overtrue in https://github.com/rustfs/rustfs/pull/6191
- fix(ecstore): make the data-usage cache load actually retry by @overtrue in https://github.com/rustfs/rustfs/pull/6229
- test(heal): cover privileged mount readiness by @houseme in https://github.com/rustfs/rustfs/pull/6231
- perf(server): skip output layer work on common GET paths by @houseme in https://github.com/rustfs/rustfs/pull/6232
- test(e2e): fold eleven post-object accept cases into one table-driven test by @overtrue in https://github.com/rustfs/rustfs/pull/6207
- fix(ecstore): classify a missing data-usage cache by the error that arrives by @overtrue in https://github.com/rustfs/rustfs/pull/6233
- fix(package): write release checksum entries with GitHub asset names by @majinghe in https://github.com/rustfs/rustfs/pull/6234
- test(io-metrics): assert what the remaining smoke tests only called by @overtrue in https://github.com/rustfs/rustfs/pull/6238
- refactor(data-usage): own SizeSummary once, with the scanner's semantics by @overtrue in https://github.com/rustfs/rustfs/pull/6237
- test(crypto): replace the one-file key scan with a repo-wide guard by @overtrue in https://github.com/rustfs/rustfs/pull/6246
- test(io-schedule): drop 24 no-op serial markers from the IO scheduler unit tests by @overtrue in https://github.com/rustfs/rustfs/pull/6243
- test(ecstore): assert the error conversions, and stop the census over-reporting by @overtrue in https://github.com/rustfs/rustfs/pull/6241
- test(e2e): drop 79 no-op serial markers from six more suites by @overtrue in https://github.com/rustfs/rustfs/pull/6239
- fix(admin): report refreshed lock lease TTLs by @cxymds in https://github.com/rustfs/rustfs/pull/6230
- refactor(app): resolve the bucket default SSE in one place by @overtrue in https://github.com/rustfs/rustfs/pull/6236
- fix(site-replication): clear pending_remove on join, surface failures by @reatang in https://github.com/rustfs/rustfs/pull/6244
- test(audit,heal): assert three more smoke tests by @overtrue in https://github.com/rustfs/rustfs/pull/6248
- docs(scanner): record heal/scanner MinIO parity decisions (backlog#1878 HS-14/16/18) by @houseme in https://github.com/rustfs/rustfs/pull/6250
- test(crypto): replace the one-file key scan with a repo-wide guard by @overtrue in https://github.com/rustfs/rustfs/pull/6255
- chore(rustfs): adjudicate all 73 bare dead_code allows by @overtrue in https://github.com/rustfs/rustfs/pull/6254
- refactor(heal,scanner): clean up dead heal/scanner code, flags, and metrics (HS-09/10/19/20) by @houseme in https://github.com/rustfs/rustfs/pull/6256
- refactor(admin): route plugin handler auth through authorize_admin_request by @overtrue in https://github.com/rustfs/rustfs/pull/6247
- docs(operations): land the heal/scanner MinIO audit baseline with closure results (backlog#1862) by @houseme in https://github.com/rustfs/rustfs/pull/6258
- test(lifecycle): cover noncurrent marker cleanup cascade by @cxymds in https://github.com/rustfs/rustfs/pull/6252
- docs(operations): add an English counterpart of the heal/scanner audit baseline by @houseme in https://github.com/rustfs/rustfs/pull/6261
- feat(ecstore): expose rename sync tail metrics by @houseme in https://github.com/rustfs/rustfs/pull/6257
- chore(rustfs): adjudicate the remaining 36 bare dead_code allows by @overtrue in https://github.com/rustfs/rustfs/pull/6259
- refactor(sse): keep one bucket-default algorithm mapping for every writer by @overtrue in https://github.com/rustfs/rustfs/pull/6251
- feat(io-metrics): attribute ReadVersion RPC stages by @houseme in https://github.com/rustfs/rustfs/pull/6262
- fix(lock): reject stale lease snapshots by @cxymds in https://github.com/rustfs/rustfs/pull/6249
- docs(operations): restore the truncated tail of the English audit baseline by @houseme in https://github.com/rustfs/rustfs/pull/6268
- feat(helm): add istio gateway class support by @majinghe in https://github.com/rustfs/rustfs/pull/6264
- fix(metrics): remove duplicate scanner counter producers by @marshawcoco in https://github.com/rustfs/rustfs/pull/6245
- docs(admin): pin two authorization semantics against a dedup rewrite by @overtrue in https://github.com/rustfs/rustfs/pull/6279
- chore(protocols): narrow the SessionDiag blanket to its one unread field by @overtrue in https://github.com/rustfs/rustfs/pull/6266
- refactor(heal): remove the dead MRF heal-type path by @houseme in https://github.com/rustfs/rustfs/pull/6275
- fix(scripts): stop the assertless-test census truncating bodies at string braces by @overtrue in https://github.com/rustfs/rustfs/pull/6280
- fix(admin): pass the real RemoteAddr so aws:SourceIp reaches policy evaluation by @overtrue in https://github.com/rustfs/rustfs/pull/6273
- fix(madmin): send background-heal status over POST by @houseme in https://github.com/rustfs/rustfs/pull/6270
- chore(common): drop dead rule helpers and the s3s dependency by @houseme in https://github.com/rustfs/rustfs/pull/6271
- fix(heal): stop O(window) memmove in the heal result window by @houseme in https://github.com/rustfs/rustfs/pull/6272
- perf(scanner): cut per-object allocations in the scan hot path by @houseme in https://github.com/rustfs/rustfs/pull/6274
- refactor(admin): route observability handler auth through the shared gate by @overtrue in https://github.com/rustfs/rustfs/pull/6263
- fix(ecstore): classify decommission stage failures by type, not by message by @overtrue in https://github.com/rustfs/rustfs/pull/6269
- feat(heal,scanner): best-effort repaired notices from the MRF consumer by @houseme in https://github.com/rustfs/rustfs/pull/6283
- perf(heal,scanner): single-flight MRF producers per detection event by @houseme in https://github.com/rustfs/rustfs/pull/6282
- chore: adjudicate the last 18 bare dead_code allows in the library crates by @overtrue in https://github.com/rustfs/rustfs/pull/6265
- feat(connect): add device identity store and registration proof by @overtrue in https://github.com/rustfs/rustfs/pull/6267
- fix(get): name the failing object on mid-stream GET body failures by @reatang in https://github.com/rustfs/rustfs/pull/6284
- refactor(scanner): split remote_scanner.rs into stream child module by @houseme in https://github.com/rustfs/rustfs/pull/6289
- refactor(heal): split resume.rs into focused child modules by @houseme in https://github.com/rustfs/rustfs/pull/6290
- refactor(scanner): split scanner_io.rs into child modules by @houseme in https://github.com/rustfs/rustfs/pull/6294
- refactor(scanner): split data_usage_define persistence and tests by @houseme in https://github.com/rustfs/rustfs/pull/6292
- chore(deps): bump datafusion to 55.0.0 by @houseme in https://github.com/rustfs/rustfs/pull/6288
- refactor(heal): split task.rs per heal kind by @houseme in https://github.com/rustfs/rustfs/pull/6293
- feat(ecstore): batch small file fdatasync commits by @houseme in https://github.com/rustfs/rustfs/pull/6297
- fix(tier): recover multi-committed mutation intents by @cxymds in https://github.com/rustfs/rustfs/pull/6296
- feat(ecstore): expose fdatasync group wait metrics by @houseme in https://github.com/rustfs/rustfs/pull/6299
- fix(lifecycle): safely expire all object versions by @cxymds in https://github.com/rustfs/rustfs/pull/6291
- test(ecstore): pin rename quorum tail visibility by @houseme in https://github.com/rustfs/rustfs/pull/6301
- refactor(scanner): split scanner_folder item actions and ledger by @houseme in https://github.com/rustfs/rustfs/pull/6302
- refactor(heal): split manager.rs queue/scheduler/scan children by @houseme in https://github.com/rustfs/rustfs/pull/6303
- perf(server): cache HTTP metric handles by @houseme in https://github.com/rustfs/rustfs/pull/6304
- refactor(scanner): split scanner.rs cycle/leadership/persist children by @houseme in https://github.com/rustfs/rustfs/pull/6305
- feat(ecstore): add default-off rename early ack probe by @houseme in https://github.com/rustfs/rustfs/pull/6306
- perf(heal): trim scanner and heal queue hot paths by @houseme in https://github.com/rustfs/rustfs/pull/6307
- fix(heal): emit MRF repair notices on completion by @houseme in https://github.com/rustfs/rustfs/pull/6309
- perf(heal): reduce scheduler skip heap churn by @houseme in https://github.com/rustfs/rustfs/pull/6311
- feat(ecstore): observe put commit lock wait by @houseme in https://github.com/rustfs/rustfs/pull/6310
- chore(release): prepare 1.0.0-rc.3 by @overtrue in https://github.com/rustfs/rustfs/pull/6308
- feat(obs): complete metric dimension coverage by @houseme in https://github.com/rustfs/rustfs/pull/6314
- refactor(heal): prune statistics label helpers by @houseme in https://github.com/rustfs/rustfs/pull/6312
- feat(ecstore): bound put commit lock admission by @houseme in https://github.com/rustfs/rustfs/pull/6315
- fix(scanner): honor explicit cycle cadence by @marshawcoco in https://github.com/rustfs/rustfs/pull/6313
- fix(webdav): allow bucket-scoped root listings by @GatewayJ in https://github.com/rustfs/rustfs/pull/6298
- test(obs): add metric dimension smoke harness by @houseme in https://github.com/rustfs/rustfs/pull/6316
- perf(io-metrics): cache read version metric handles by @houseme in https://github.com/rustfs/rustfs/pull/6317
- perf(scanner): reduce per-object allocation churn by @houseme in https://github.com/rustfs/rustfs/pull/6318
- fix: resolve release-blocking integration failures by @overtrue in https://github.com/rustfs/rustfs/pull/6320
- test: stabilize release-blocking full E2E checks by @overtrue in https://github.com/rustfs/rustfs/pull/6322
- feat(ecstore): observe PUT commit lock admission by @houseme in https://github.com/rustfs/rustfs/pull/6319
- docs(agents): run adversarial review before pre-pr by @cxymds in https://github.com/rustfs/rustfs/pull/6325
- fix(lifecycle): honor bucket default retention by @marshawcoco in https://github.com/rustfs/rustfs/pull/6324
Full Changelog: https://github.com/rustfs/rustfs/compare/1.0.0-rc.2...1.0.0-rc.3-preview.2
5.0.3
- Fix WebMvc PerserveHostHeader so it matches Webflux by @ryanjbaxter in https://github.com/spring-cloud/spring-cloud-gateway/pull/4213
- GH-3791: Document AdaptCachedBody filter for Spring Cloud Gateway WebMVC by @won-seoop in https://github.com/spring-cloud/spring-cloud-gateway/pull/4197
- GH-3885: Document Spring Security integration for WebFlux and WebMVC gateways by @won-seoop in https://github.com/spring-cloud/spring-cloud-gateway/pull/4198
- GH-1949: Document that overriding discovery locator filters replaces defaults by @won-seoop in https://github.com/spring-cloud/spring-cloud-gateway/pull/4199
- GH-4024: Add documentation for the Version Route Predicate Factory by @won-seoop in https://github.com/spring-cloud/spring-cloud-gateway/pull/4205
- GH-3168: Document that @LoadBalanced RestClient must not be used in Gateway MVC by @won-seoop in https://github.com/spring-cloud/spring-cloud-gateway/pull/4200
- docs: update gateway grafana dashboard by @imanabr77 in https://github.com/spring-cloud/spring-cloud-gateway/pull/4215
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in https://github.com/spring-cloud/spring-cloud-gateway/pull/4219
- Bump antora from 3.2.0-alpha.12 to 3.2.0-rc.2 in /docs by @dependabot[bot] in https://github.com/spring-cloud/spring-cloud-gateway/pull/4221
- Add MVC retry backoff support by @goutamadwant in https://github.com/spring-cloud/spring-cloud-gateway/pull/4225
- Bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in https://github.com/spring-cloud/spring-cloud-gateway/pull/4241
- Exclude release-train workflows from Dependabot updates by @ryanjbaxter in https://github.com/spring-cloud/spring-cloud-gateway/pull/4252
- Bump @springio/antora-extensions from 1.14.12 to 1.14.13 in /docs by @dependabot[bot] in https://github.com/spring-cloud/spring-cloud-gateway/pull/4253
- Fix ordering in test by @ryanjbaxter in https://github.com/spring-cloud/spring-cloud-gateway/pull/4255
- Add missing test scope to spring-boot-resttestclient by @timpeeters in https://github.com/spring-cloud/spring-cloud-gateway/pull/4257
- Add warn logging when WebSocket message receive fails by @fru1tworld in https://github.com/spring-cloud/spring-cloud-gateway/pull/4134
- Avoid draining failed streaming proxy responses by @goutamadwant in https://github.com/spring-cloud/spring-cloud-gateway/pull/4217
- @won-seoop made their first contribution in https://github.com/spring-cloud/spring-cloud-gateway/pull/4197
- @imanabr77 made their first contribution in https://github.com/spring-cloud/spring-cloud-gateway/pull/4215
- @goutamadwant made their first contribution in https://github.com/spring-cloud/spring-cloud-gateway/pull/4225
- @timpeeters made their first contribution in https://github.com/spring-cloud/spring-cloud-gateway/pull/4257
Full Changelog: https://github.com/spring-cloud/spring-cloud-gateway/compare/v5.0.2...v5.0.3