13.3.1
Download page What's new highlights
- Security: Fix CVE-2026-102589
- Security: Fix CVE-2026-107509
- Security: Fix CVE-2026-110992
- Security: Fix CVE-2026-111024
- Security: Fix CVE-2026-13721
- Security: Fix CVE-2026-14242
- DateTime: Update moment-timezone and easy-tz for 2026 time zone changes #136951, @joshhunt
- Provisioning: allow same-host URL change on connection-backed repositories #137083, @grafana-writer[bot]
13.2.6
Download page What's new highlights
- Security: Fix CVE-2026-102589
- Security: Fix CVE-2026-107509
- Security: Fix CVE-2026-110992
- Security: Fix CVE-2026-111024
- Security: Fix CVE-2026-13721
- Security: Fix CVE-2026-14242
- DateTime: Update moment-timezone and easy-tz for 2026 time zone changes #136950, @joshhunt
- Provisioning: Handle repository build timeouts and branch outages #135723, @ferruvich
- Provisioning: allow same-host URL change on connection-backed repositories #137091, @MissingRoberto
- Unified search: Fix empty results when all query words are under 3 chars #137309, @grafana-writer[bot]
13.1.10
Download page What's new highlights
- Security: Fix CVE-2026-102589
- Security: Fix CVE-2026-107365
- Security: Fix CVE-2026-107509
- Security: Fix CVE-2026-110992
- Security: Fix CVE-2026-111024
- Security: Fix CVE-2026-13721
- Security: Fix CVE-2026-14242
- Provisioning: allow same-host URL change on connection-backed repositories #137090, @MissingRoberto
13.0.13
Download page What's new highlights
- Security: Fix CVE-2026-102589
- Security: Fix CVE-2026-107365
- Security: Fix CVE-2026-107509
- Security: Fix CVE-2026-110992
- Security: Fix CVE-2026-111024
- Security: Fix CVE-2026-13721
- Security: Fix CVE-2026-14242
- Security: Fix CVE-2026-82014
- DateTime: Bump moment-timezone to 0.6.6 for 2026 time zone changes #136948, @joshhunt
- Provisioning: allow same-host URL change on connection-backed repositories #137092, @MissingRoberto
12.4.15
Download page What's new highlights
- Security: Fix CVE-2026-102589
- Security: Fix CVE-2026-106472
- Security: Fix CVE-2026-106475
- Security: Fix CVE-2026-107365
- Security: Fix CVE-2026-107509
- Security: Fix CVE-2026-111000
- Security: Fix CVE-2026-81843
- Security: Fix CVE-2026-82014
RustFS 1.0.5
- Complete the upgrade from 1.0.4 on every node before adding or removing pools, or retrying a decommission operation.
- While 1.0.4 and 1.0.5 nodes coexist, DELETE requests handled by new nodes may temporarily return HTTP 503. Retry them after all nodes are upgraded. The compatibility check verified existing data integrity and DELETE recovery after the upgrade.
The macOS archive can display an extra 1.0.5-preview.1 line because both tags identify the same source commit. This affects version text and may affect update notifications. The archive source, startup, Console and S3 read/write/delete checks were verified. This minor issue is tracked for 1.0.6; the new candidate pipeline explicitly stamps the final product version.
- fix(scanner): treat replication status writebacks as status-class hints by @reatang in https://github.com/rustfs/rustfs/pull/8509
- fix(s3): preserve catalog lock failures at the error boundary by @houseme in https://github.com/rustfs/rustfs/pull/8550
- chore(deps): refresh Rustls and TAR parser test crates by @houseme in https://github.com/rustfs/rustfs/pull/8547
- fix(s3): align raw disk-full failures with capacity refusals by @houseme in https://github.com/rustfs/rustfs/pull/8553
- feat(iam): support wildcard in IAM policy resources by @alpbeysir in https://github.com/rustfs/rustfs/pull/8555
- test(e2e): wait for heal control before deep heal after restart by @overtrue in https://github.com/rustfs/rustfs/pull/8554
- feat(s3): support conditional bulk deletes by @cxymds in https://github.com/rustfs/rustfs/pull/8535
- fix(ecstore): retain pool metadata repair ownership by @houseme in https://github.com/rustfs/rustfs/pull/8552
- fix(scanner): use observational leases for incomplete snapshots by @houseme in https://github.com/rustfs/rustfs/pull/8561
- fix(scanner): clear transient cycle recovery on follower lock contention by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8566
- fix(data-usage): retain complete totals when a set is missing by @marshawcoco in https://github.com/rustfs/rustfs/pull/8558
- fix(s3): make an unsupported delete participant retryable and explain it by @overtrue in https://github.com/rustfs/rustfs/pull/8574
- fix(replication): skip the replica ETag audit for encrypted sources by @overtrue in https://github.com/rustfs/rustfs/pull/8573
- fix(ecstore): box the transition payload of CurrentDeleteGeneration by @overtrue in https://github.com/rustfs/rustfs/pull/8581
- fix(scanner): persist partial progress after budget cancellation by @houseme in https://github.com/rustfs/rustfs/pull/8578
- test(replication): cover SSE-S3 replicas on ETag-computing targets by @reatang in https://github.com/rustfs/rustfs/pull/8583
- fix(ecstore): quiet routine admin info timing logs by @houseme in https://github.com/rustfs/rustfs/pull/8584
- fix(ecstore): merge migrated copies across inline layouts by @cxymds in https://github.com/rustfs/rustfs/pull/8588
- fix(rpc): clarify stale epoch rejection diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/8585
- feat(diagnostics): port read attribution to main by @houseme in https://github.com/rustfs/rustfs/pull/8579
- fix(multipart): retain commits and reclaim verified orphan staging by @cxymds in https://github.com/rustfs/rustfs/pull/8571
- fix(rebalance): wait for readiness and admit peer workers by @cxymds in https://github.com/rustfs/rustfs/pull/8570
- test(e2e): gate the rc.5 baseline restarts on drive re-admission by @reatang in https://github.com/rustfs/rustfs/pull/8595
- test(e2e): send the quota batch delete in verbose mode by @overtrue in https://github.com/rustfs/rustfs/pull/8589
- fix(ci): stop PRs for sync conflicts by @overtrue in https://github.com/rustfs/rustfs/pull/8598
- test(s3-select): fix schema reference field ordering by @houseme in https://github.com/rustfs/rustfs/pull/8599
- chore(deps): refresh workspace dependencies by @houseme in https://github.com/rustfs/rustfs/pull/8597
- sync: merge main 2026-10-15 (conflicts) by @houseme in https://github.com/rustfs/rustfs/pull/8557
- fix(ecstore): unify bounded delete recovery across upgrades by @houseme in https://github.com/rustfs/rustfs/pull/8594
- fix(lifecycle): read exact object versions after writes by @cxymds in https://github.com/rustfs/rustfs/pull/8601
- feat(scanner): decouple bucket walkers from disk count by @reatang in https://github.com/rustfs/rustfs/pull/8539
- fix(heal): recover replacements after pool removal by @cxymds in https://github.com/rustfs/rustfs/pull/8600
- fix(quota): keep writes available with a degraded fleet by @cxymds in https://github.com/rustfs/rustfs/pull/8604
- fix(ecstore): box large enum variant in CurrentDeleteGeneration by @overtrue in https://github.com/rustfs/rustfs/pull/8576
- fix(replication): locate encrypted replicas without comparing ETags by @reatang in https://github.com/rustfs/rustfs/pull/8602
- fix(ecstore): publish delete rollback backups past Windows MAX_PATH by @reatang in https://github.com/rustfs/rustfs/pull/8606
- fix(ecstore): publish delete rollback files via verbatim-safe rename by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8607
- fix(scanner): retain partial progress without a usage update by @marshawcoco in https://github.com/rustfs/rustfs/pull/8612
- fix(connect): prepare profile fixtures before timed IPC by @marshawcoco in https://github.com/rustfs/rustfs/pull/8616
- chore(release): align installation references for 1.0.2 by @overtrue in https://github.com/rustfs/rustfs/pull/8617
- fix(connect): retain bounded object cleanup diagnostics by @marshawcoco in https://github.com/rustfs/rustfs/pull/8624
- fix: resolve clippy warnings from Rust 1.99 lints by @overtrue in https://github.com/rustfs/rustfs/pull/8619
- feat(table-catalog): plan maintenance on durable backing by @marshawcoco in https://github.com/rustfs/rustfs/pull/8567
- fix(s3): return 412 for conditional multipart uploads on existing keys by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8625
- fix(admin): preserve dirty usage over observed snapshots by @marshawcoco in https://github.com/rustfs/rustfs/pull/8627
- fix(ecstore): unify object key admission for Windows hosts by @reatang in https://github.com/rustfs/rustfs/pull/8632
- fix(startup): drive startup on an explicitly sized thread by @reatang in https://github.com/rustfs/rustfs/pull/8630
- fix(ecstore): resolve Windows drive paths in URL endpoints by @reatang in https://github.com/rustfs/rustfs/pull/8629
- fix(lifecycle): compact inline versions once per deletion batch by @cxymds in https://github.com/rustfs/rustfs/pull/8634
- fix(ecstore): keep Windows disk roots out of verbatim form by @reatang in https://github.com/rustfs/rustfs/pull/8633
- fix(lifecycle): skip empty delete replication tasks by @cxymds in https://github.com/rustfs/rustfs/pull/8628
- fix(ecstore): share cache and lock identity across Windows key aliases by @reatang in https://github.com/rustfs/rustfs/pull/8635
- fix(utils): harden Win32 volume probes and flag Windows network drives by @reatang in https://github.com/rustfs/rustfs/pull/8631
- fix(ecstore): converge partial pool identity writes by @cxymds in https://github.com/rustfs/rustfs/pull/8636
- fix(ci): refresh E2E selection and isolate disk lock probes by @overtrue in https://github.com/rustfs/rustfs/pull/8638
- fix(lifecycle): reject expiry from stale policy snapshots by @cxymds in https://github.com/rustfs/rustfs/pull/8637
- docs(release): add post-release advisory reconciliation by @overtrue in https://github.com/rustfs/rustfs/pull/8639
- fix(filemeta): read large metacache records incrementally by @houseme in https://github.com/rustfs/rustfs/pull/8640
- fix(scanner): preserve checkpoint progress across object failures by @houseme in https://github.com/rustfs/rustfs/pull/8642
- fix(ecstore): reclaim rollback backups after object heal by @houseme in https://github.com/rustfs/rustfs/pull/8641
- fix(scanner): certify dirty usage per bucket and complete cycles with pending buckets by @reatang in https://github.com/rustfs/rustfs/pull/8542
- fix(scanner): attribute incomplete census and lease waits by @houseme in https://github.com/rustfs/rustfs/pull/8643
- perf(ecstore): keep inline heal rollback backups in staging by @houseme in https://github.com/rustfs/rustfs/pull/8648
- perf(filemeta): avoid clones and redundant map scans in into_fileinfo by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8647
- chore(release): align installation references for 1.0.3 by @overtrue in https://github.com/rustfs/rustfs/pull/8646
- fix(heal): verify checkpoint integrity before applying defaults by @houseme in https://github.com/rustfs/rustfs/pull/8649
- test(utils): cover mixed-case metadata alias conflicts by @overtrue in https://github.com/rustfs/rustfs/pull/8651
- test(table-catalog): validate current backing contracts by @marshawcoco in https://github.com/rustfs/rustfs/pull/8559
- feat(table-catalog): support conditional maintenance worker retries by @marshawcoco in https://github.com/rustfs/rustfs/pull/8562
- fix(ecstore): preserve inline heal rollback staging lifetime by @houseme in https://github.com/rustfs/rustfs/pull/8650
- fix(ecstore): clean completed PUT staging on pre-commit cancellation by @marshawcoco in https://github.com/rustfs/rustfs/pull/8654
- fix(scanner): pace checkpoints by snapshot construction cost by @marshawcoco in https://github.com/rustfs/rustfs/pull/8656
- fix(scanner): expose mixed sweep checkpoint transitions by @houseme in https://github.com/rustfs/rustfs/pull/8657
- fix(listing): accept literal prefixes with repeated slashes by @overtrue in https://github.com/rustfs/rustfs/pull/8605
- fix(scanner): scale backup deadline to checkpoint save cost by @marshawcoco in https://github.com/rustfs/rustfs/pull/8659
- feat(oidc): make the Console session duration configurable by @limitcool in https://github.com/rustfs/rustfs/pull/8568
- feat(policy): support s3:if-none-match and s3:if-match condition keys by @oc7o in https://github.com/rustfs/rustfs/pull/8615
- perf(filemeta): avoid clones and intermediate allocations in xl.meta codec by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8661
- fix(heal): place checkpoint serialization impls before tests by @overtrue in https://github.com/rustfs/rustfs/pull/8663
- feat(policy): support object creation operation conditions by @houseme in https://github.com/rustfs/rustfs/pull/8671
- docs: unify agent instructions across tools by @overtrue in https://github.com/rustfs/rustfs/pull/8675
- docs(architecture): record scanner usage authority and PUT-tail decisions by @overtrue in https://github.com/rustfs/rustfs/pull/8678
- ci: move compile-free and prebuilt-binary lanes to hosted runners by @overtrue in https://github.com/rustfs/rustfs/pull/8679
- fix(auth): restrict root-derived accounts and credential logs by @overtrue in https://github.com/rustfs/rustfs/pull/8674
- chore(docker): upgrade Alpine base image to 3.24.2 by @overtrue in https://github.com/rustfs/rustfs/pull/8680
- ci: reuse the dev cache in Connect boundary lanes and raise build jobs by @overtrue in https://github.com/rustfs/rustfs/pull/8682
- fix(helm): skip data PVCs when storageclass.dataStorageSize is empty by @overtrue in https://github.com/rustfs/rustfs/pull/8681
- ci: build development packages nightly instead of on every main push by @overtrue in https://github.com/rustfs/rustfs/pull/8684
- fix(helm): hold rolling updates until survivors re-admit a replaced pod by @overtrue in https://github.com/rustfs/rustfs/pull/8686
- fix(ci): align the ILM build-budget guard with CARGO_BUILD_JOBS 3 by @overtrue in https://github.com/rustfs/rustfs/pull/8687
- fix(ecstore): recover deletes beside stale data backups by @houseme in https://github.com/rustfs/rustfs/pull/8688
- fix(ci): restore the release-profile short-credential guard by @overtrue in https://github.com/rustfs/rustfs/pull/8691
- fix(ci): refresh the e2e-full selection for the new policy tests by @overtrue in https://github.com/rustfs/rustfs/pull/8693
- ci: run feature lanes nightly and warm caches on a schedule by @overtrue in https://github.com/rustfs/rustfs/pull/8683
- fix(admin): avoid error logs for idle rebalance status by @cxymds in https://github.com/rustfs/rustfs/pull/8694
- fix(ecstore): skip node-local prefix dirs in decommission listing by @overtrue in https://github.com/rustfs/rustfs/pull/8702
- fix(scanner): startup gates back off, rebuild and run degraded by @overtrue in https://github.com/rustfs/rustfs/pull/8695
- ci: return pull-request build jobs to 2 after an IO-bound timeout at 3 by @overtrue in https://github.com/rustfs/rustfs/pull/8698
- fix(heal): block replacement and root records per entry by @overtrue in https://github.com/rustfs/rustfs/pull/8700
- fix(scanner): anchor the bitrot cadence and budget per-disk I/O by @overtrue in https://github.com/rustfs/rustfs/pull/8701
- fix(storage): preserve scanner checkpoints and bound MRF journal I/O by @houseme in https://github.com/rustfs/rustfs/pull/8692
- test(connect): hash test provenance before listener peer-cred probe by @overtrue in https://github.com/rustfs/rustfs/pull/8703
- fix(scanner): stop treating an ordinary PUT as data movement in cycle termination by @overtrue in https://github.com/rustfs/rustfs/pull/8696
- fix(quota): keep ledger-admitted writes independent of scanner usage by @overtrue in https://github.com/rustfs/rustfs/pull/8699
- ci: gate pull requests on Clippy and warm its check artifacts by @overtrue in https://github.com/rustfs/rustfs/pull/8708
- ci: move API-only and summary jobs to hosted runners by @overtrue in https://github.com/rustfs/rustfs/pull/8707
- fix(readiness): hold startup readiness until peers re-admit the node by @overtrue in https://github.com/rustfs/rustfs/pull/8704
- fix(heal): decide object absence from storage evidence, not source by @overtrue in https://github.com/rustfs/rustfs/pull/8697
- fix(ecstore): address the null version exactly during data movement by @overtrue in https://github.com/rustfs/rustfs/pull/8711
- fix(decommission): adopt target intents left by a killed leader by @overtrue in https://github.com/rustfs/rustfs/pull/8710
- test(obs): pin daily rotation boundary test to fixed timestamps by @overtrue in https://github.com/rustfs/rustfs/pull/8716
- fix(quota): stop pinning quota e2e readiness to the scanner leader by @overtrue in https://github.com/rustfs/rustfs/pull/8719
- fix(decommission): scope temporary-copy budget checks to the growth pool by @overtrue in https://github.com/rustfs/rustfs/pull/8721
- fix(decommission): keep status reads and starts off the movement gate by @overtrue in https://github.com/rustfs/rustfs/pull/8715
- test(quota): cover early-reload routing and snapshot age boundaries by @overtrue in https://github.com/rustfs/rustfs/pull/8722
- perf(ecstore,filemeta): avoid inline-data reads and redundant decodes in list_objects by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8706
- fix(decommission): retry every stale target selection without failing by @overtrue in https://github.com/rustfs/rustfs/pull/8724
- fix(decommission): run the leader-side start to completion by @overtrue in https://github.com/rustfs/rustfs/pull/8723
- fix(obs): skip address discovery for initialized node identity by @houseme in https://github.com/rustfs/rustfs/pull/8730
- fix(ecstore): leave no source free version for a moved tier version by @overtrue in https://github.com/rustfs/rustfs/pull/8732
- fix(table-catalog): authorize warehouse location claims by @GatewayJ in https://github.com/rustfs/rustfs/pull/8736
- fix(quota): refresh peer metadata after admin quota changes by @cxymds in https://github.com/rustfs/rustfs/pull/8735
- fix(decommission): allow retry after unresolved failure by @cxymds in https://github.com/rustfs/rustfs/pull/8737
- fix(metrics): preserve S3 operation across detached tasks by @houseme in https://github.com/rustfs/rustfs/pull/8738
- fix(s3): validate bucket location constraints by @houseme in https://github.com/rustfs/rustfs/pull/8739
- fix(table-catalog): support manifest-only rewrites by @GatewayJ in https://github.com/rustfs/rustfs/pull/8731
- fix(tier): restore private endpoints and forced config removal by @cxymds in https://github.com/rustfs/rustfs/pull/8725
- fix(metrics): expose allocator observation availability by @houseme in https://github.com/rustfs/rustfs/pull/8748
- fix(rebalance): move tier free versions with their entry by @overtrue in https://github.com/rustfs/rustfs/pull/8753
- fix(ecstore): allow repeated marker deletes at write quorum by @cxymds in https://github.com/rustfs/rustfs/pull/8750
- fix(runtime): isolate configured region per store instance by @houseme in https://github.com/rustfs/rustfs/pull/8743
- fix(ecstore): reindex pool metadata ids after removal by @cxymds in https://github.com/rustfs/rustfs/pull/8733
- test(filemeta,ecstore): cover listing metadata and msgpack decode paths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8755
- fix(iam): derive bucket location conditions from XML by @houseme in https://github.com/rustfs/rustfs/pull/8744
- fix(replication): replicate null versions written before versioning by @reatang in https://github.com/rustfs/rustfs/pull/8757
- fix(ecstore): ignore child-key prefixes in delete settlement fingerprint by @overtrue in https://github.com/rustfs/rustfs/pull/8751
- fix(replication): read source delete markers on multi-pool stores by @reatang in https://github.com/rustfs/rustfs/pull/8756
- fix(scanner): admit dirty scope across the bucket-listing window and pace full-walk fallbacks by @reatang in https://github.com/rustfs/rustfs/pull/8690
- fix(decommission): let a failed start roll back its own activation by @overtrue in https://github.com/rustfs/rustfs/pull/8752
- test(heal): retain unknown same-key repair across replay by @houseme in https://github.com/rustfs/rustfs/pull/8759
- fix(s3): avoid mutation locks for existing buckets by @shurkus in https://github.com/rustfs/rustfs/pull/8745
- chore(deps): refresh dependencies and patch certificate trust by @houseme in https://github.com/rustfs/rustfs/pull/8761
- fix(ecstore): handle Windows trash cleanup deletion races by @reatang in https://github.com/rustfs/rustfs/pull/8754
- fix(decommission): defer source cleanup quorum failures by @overtrue in https://github.com/rustfs/rustfs/pull/8760
- feat(metrics): observe remote directory walk lifecycles by @houseme in https://github.com/rustfs/rustfs/pull/8765
- ci(pool): finalize decommission removal and verify surviving pools by @majinghe in https://github.com/rustfs/rustfs/pull/8749
- test(e2e): add scanner/heal topology protection matrix by @overtrue in https://github.com/rustfs/rustfs/pull/8705
- perf(filemeta,ecstore): avoid intermediate clones in FileInfo decode by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8767
- fix(ecstore): honor idle drive monitoring opt-out by @overtrue in https://github.com/rustfs/rustfs/pull/8770
- fix(heal): hold unobserved legacy MRF responsibilities by @overtrue in https://github.com/rustfs/rustfs/pull/8772
- fix(ecstore): retain operation in detached mutations by @houseme in https://github.com/rustfs/rustfs/pull/8776
- feat(metrics): track usage outcomes and trim decommission probes by @houseme in https://github.com/rustfs/rustfs/pull/8781
- fix(s3): return InvalidPart and streamline multipart completion by @houseme in https://github.com/rustfs/rustfs/pull/8780
- fix(ecstore): preserve diagnostic context in config tasks by @houseme in https://github.com/rustfs/rustfs/pull/8779
- fix(heal): type legacy MRF decisions and defer diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/8778
- fix(decommission): move the free version of an expired tier version by @overtrue in https://github.com/rustfs/rustfs/pull/8777
- feat(metrics): observe local walk lifecycle and output bytes by @houseme in https://github.com/rustfs/rustfs/pull/8775
- perf(heal): aggregate MRF lifecycle metrics in one pass by @houseme in https://github.com/rustfs/rustfs/pull/8773
- fix(replication): keep replicated multipart null versions as null by @reatang in https://github.com/rustfs/rustfs/pull/8763
- docs(agents): add three-verdict finding contract to security skill by @overtrue in https://github.com/rustfs/rustfs/pull/8795
- fix(decommission): finish multipart null versions superseded on target by @overtrue in https://github.com/rustfs/rustfs/pull/8774
- perf(scanner): move owned usage snapshot keys by @houseme in https://github.com/rustfs/rustfs/pull/8792
- perf(s3): remove unused multi-delete result clones by @houseme in https://github.com/rustfs/rustfs/pull/8789
- feat(metrics): count scanner wakeups and cycle attempts by @houseme in https://github.com/rustfs/rustfs/pull/8786
- fix(diagnostics): preserve context across task handoffs by @houseme in https://github.com/rustfs/rustfs/pull/8785
- perf(filemeta,ecstore): index metadata batches and trim decodes by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8784
- feat(metrics): expose allocator reclaim statistic totals by @houseme in https://github.com/rustfs/rustfs/pull/8782
- perf(heal): reuse the verified repair proof queue by @houseme in https://github.com/rustfs/rustfs/pull/8790
- feat(metrics): observe HTTP entry-to-dispatch latency by @houseme in https://github.com/rustfs/rustfs/pull/8788
- test(obs): cover contended identity under netlink denial by @houseme in https://github.com/rustfs/rustfs/pull/8797
- fix(ecstore): identify scanner retirement planner failure phases by @houseme in https://github.com/rustfs/rustfs/pull/8796
- chore(deps): refresh cloud SDKs, runtime and profiling by @houseme in https://github.com/rustfs/rustfs/pull/8787
- perf(ecstore,filemeta): batch listings and buffer metacache streams by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8791
- perf(heal): skip replay anchor clones for empty repair queues by @houseme in https://github.com/rustfs/rustfs/pull/8798
- fix(ecstore): skip empty tier recovery scans by @cxymds in https://github.com/rustfs/rustfs/pull/8804
- fix(ecstore): restore marker write quorum on decommission resume by @houseme in https://github.com/rustfs/rustfs/pull/8793
- perf(heal): borrow intents during retirement proof checks by @houseme in https://github.com/rustfs/rustfs/pull/8800
- chore(deps): upgrade workspace parking_lot to 0.13 by @houseme in https://github.com/rustfs/rustfs/pull/8801
- perf(utils,filemeta): vectorize path and metadata key hot loops with SWAR by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8806
- fix(ecstore): preserve scanner authority during decommission by @houseme in https://github.com/rustfs/rustfs/pull/8807
- test(scanner): reserve capacity for all native backlog fixtures by @houseme in https://github.com/rustfs/rustfs/pull/8802
- fix(config): preserve persisted compatibility fields by @cxymds in https://github.com/rustfs/rustfs/pull/8803
- feat(metrics): classify terminal remote walk failures by @houseme in https://github.com/rustfs/rustfs/pull/8809
- perf(filemeta): avoid per-replica cloning during metacache quorum resolution by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8810
- fix(scanner): fence backlog writes against stale pool membership by @houseme in https://github.com/rustfs/rustfs/pull/8799
- perf(filemeta): fast-path canonical V3 header matching and borrowed version merges by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8811
- test(e2e): accept retried rebalance deferrals; retry busy decom preflight by @overtrue in https://github.com/rustfs/rustfs/pull/8813
- fix(admin): serve bare madmin info bodies on the MinIO prefix by @reatang in https://github.com/rustfs/rustfs/pull/8815
- fix(replication): reject connection edits on site-replication targets by @reatang in https://github.com/rustfs/rustfs/pull/8814
- fix(site-replication): keep stored name on endpoint-only edits by @reatang in https://github.com/rustfs/rustfs/pull/8817
- fix(s3): preserve typed upload errors across body readers by @houseme in https://github.com/rustfs/rustfs/pull/8816
- chore(deps): refresh ICU and profiling dependencies by @houseme in https://github.com/rustfs/rustfs/pull/8820
- fix(ecstore): preserve migrated reads and retry busy pool heals by @overtrue in https://github.com/rustfs/rustfs/pull/8821
- fix(heal): list local blocks and quiet legacy ambiguity logs by @overtrue in https://github.com/rustfs/rustfs/pull/8826
- fix(decommission): keep partially moved versions readable by @overtrue in https://github.com/rustfs/rustfs/pull/8824
- fix(ecstore): unify multipart generation fence lifetimes by @houseme in https://github.com/rustfs/rustfs/pull/8830
- fix(scanner): streamline budgeted metadata walks by @houseme in https://github.com/rustfs/rustfs/pull/8837
- feat(heal): inspect blocked checkpoint validation without mutation by @overtrue in https://github.com/rustfs/rustfs/pull/8838
- fix(test): select the current G09 upgrade case by @overtrue in https://github.com/rustfs/rustfs/pull/8841
- perf(ecstore): bound xl.meta read workers and enable HEAD early-stop by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8846
- fix(heal): preserve typed replacement readiness deferrals by @overtrue in https://github.com/rustfs/rustfs/pull/8823
- fix(scanner): preserve remote checkpoint coverage identity by @overtrue in https://github.com/rustfs/rustfs/pull/8827
- fix(scanner): recover dual corruption with retained epoch fencing by @overtrue in https://github.com/rustfs/rustfs/pull/8833
- fix(quota): retire degraded floors from durable usage reports by @overtrue in https://github.com/rustfs/rustfs/pull/8832
- perf(scanner): transfer owned caches without redundant clones by @overtrue in https://github.com/rustfs/rustfs/pull/8849
- chore(deps): refresh crates and upgrade hotpath to 0.29.0 by @houseme in https://github.com/rustfs/rustfs/pull/8852
- feat(scanner): configure startup recovery backoff cap by @overtrue in https://github.com/rustfs/rustfs/pull/8845
- fix(notify): preserve marker IDs and reduce event allocations by @houseme in https://github.com/rustfs/rustfs/pull/8853
- feat(scanner): observe canonical heal task terminals by @overtrue in https://github.com/rustfs/rustfs/pull/8851
- fix(scanner): recover backlog across interrupted pool expansions by @overtrue in https://github.com/rustfs/rustfs/pull/8858
- fix(decommission): count settled entries once, back off repeat pauses by @overtrue in https://github.com/rustfs/rustfs/pull/8848
- test(heal): cover rc.5 upgrades and refresh ctutils by @overtrue in https://github.com/rustfs/rustfs/pull/8847
- test(e2e): bound parallel seeding for scanner usage checks by @overtrue in https://github.com/rustfs/rustfs/pull/8861
- fix(scanner): collect benchmark metrics from realtime route by @overtrue in https://github.com/rustfs/rustfs/pull/8859
- fix(ecstore): skip orphan cleanup for leading-slash listings by @overtrue in https://github.com/rustfs/rustfs/pull/8864
- feat(scanner): count cache save payload bytes per attempt by @overtrue in https://github.com/rustfs/rustfs/pull/8865
- feat(heal): record namespace lock acquisition waits by @overtrue in https://github.com/rustfs/rustfs/pull/8866
- fix(scanner): recover an interleaved pause backlog wedge after expansion by @overtrue in https://github.com/rustfs/rustfs/pull/8867
- test(scanner): add recoverable benchmark service control by @overtrue in https://github.com/rustfs/rustfs/pull/8868
- fix(heal): measure admission lock wait and hold separately by @overtrue in https://github.com/rustfs/rustfs/pull/8863
- feat(scanner): extract OTLP histogram and counter windows by @overtrue in https://github.com/rustfs/rustfs/pull/8862
- fix(storage): apply and index explicit delete-marker removals by @houseme in https://github.com/rustfs/rustfs/pull/8854
- fix(scanner): classify erasure candidates in one budgeted walk by @houseme in https://github.com/rustfs/rustfs/pull/8869
- fix(s3): apply bucket CORS to virtual-hosted-style requests by @cozima in https://github.com/rustfs/rustfs/pull/8860
- feat(scanner): count object metadata visits by @overtrue in https://github.com/rustfs/rustfs/pull/8874
- perf(ecstore): coalesce inline PUT commit and bound disk namespace workers by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8871
- test(scanner): verify retained versions with an independent oracle by @overtrue in https://github.com/rustfs/rustfs/pull/8870
- fix(scanner): preserve unknown catch-up state on ledger failure by @overtrue in https://github.com/rustfs/rustfs/pull/8877
- test(scanner): attest running benchmark process identity by @overtrue in https://github.com/rustfs/rustfs/pull/8876
- fix: isolate internode reads and migrate crypto dependencies by @houseme in https://github.com/rustfs/rustfs/pull/8872
- test(ilm): isolate fixture recovery loop ownership by @overtrue in https://github.com/rustfs/rustfs/pull/8881
- perf(ecstore): avoid heap allocation for shard descriptors by @houseme in https://github.com/rustfs/rustfs/pull/8873
- fix(s3): preserve aws-chunked error responses by @houseme in https://github.com/rustfs/rustfs/pull/8875
- feat(scanner): expose publication and heal observation status by @overtrue in https://github.com/rustfs/rustfs/pull/8878
- feat(observability): sample live cgroup resource limits by @overtrue in https://github.com/rustfs/rustfs/pull/8882
- fix(quota): persist lazily created populated shards by @cxymds in https://github.com/rustfs/rustfs/pull/8883
- perf(ecstore): avoid head-of-line blocking in delete recovery by @houseme in https://github.com/rustfs/rustfs/pull/8884
- feat(concurrency): retain resource leases through native I/O by @overtrue in https://github.com/rustfs/rustfs/pull/8886
- feat(observability): track foreground response-body completion windows by @overtrue in https://github.com/rustfs/rustfs/pull/8894
- fix(lock): reach quorum behind silent voters by @houseme in https://github.com/rustfs/rustfs/pull/8895
- fix(ecstore): invalidate FdCache on in-place writes, rename_part, and directory rename_file by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8889
- fix(server): preserve UTF-8 boundaries in Content-Disposition filename parsing by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8880
- perf(rpc): remove stream boxing and verify distributed TLS reads by @houseme in https://github.com/rustfs/rustfs/pull/8885
- fix(ecstore): avoid usize underflow when root_disk drives are offline or unknown by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8879
- fix(s3): preserve legacy plaintext multipart ETags in listings by @houseme in https://github.com/rustfs/rustfs/pull/8900
- feat(heal): add live node admission feedback by @overtrue in https://github.com/rustfs/rustfs/pull/8897
- fix(scanner): make startup responsive and skip redundant config work by @houseme in https://github.com/rustfs/rustfs/pull/8898
- fix(ecstore): unblock delete replay and parallelize preparation by @houseme in https://github.com/rustfs/rustfs/pull/8896
- fix(multipart): recover aborts without retaining topology locks by @houseme in https://github.com/rustfs/rustfs/pull/8904
- fix(listing): keep the limit flag monotonic and fix metacache helpers by @overtrue in https://github.com/rustfs/rustfs/pull/8906
- fix(rio): ZigZag-encode signed delta varints and widen scratch buffer in compress_index by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8893
- fix(heal): retain MRF state when bucket identity is unresolved by @overtrue in https://github.com/rustfs/rustfs/pull/8905
- perf(ecstore): reduce scanner metadata path allocation overhead by @houseme in https://github.com/rustfs/rustfs/pull/8899
- chore(deps): refresh allocator, profiling, and archive crates by @houseme in https://github.com/rustfs/rustfs/pull/8910
- fix(listing): honor per-object quorum with borrowed metadata by @houseme in https://github.com/rustfs/rustfs/pull/8901
- test(e2e): harden multipart fault and TLS acceptance by @houseme in https://github.com/rustfs/rustfs/pull/8907
- fix(listing): make page exhaustion explicit, carry limit stops in-band by @overtrue in https://github.com/rustfs/rustfs/pull/8908
- fix(rebalance): move a version a delete-all expiry would apply inline by @overtrue in https://github.com/rustfs/rustfs/pull/8917
- fix(ecstore): preserve inactive multipart abort authority by @houseme in https://github.com/rustfs/rustfs/pull/8920
- perf(ecstore): isolate durable I/O and streamline disk dispatch by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8902
- fix(concurrency): prevent premature Workers::wait drain completion on slot handoff by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8892
- feat(heal): read retained MRF lifecycle v2 checkpoints by @overtrue in https://github.com/rustfs/rustfs/pull/8913
- fix(admin): decouple target inventory from runtime convergence by @houseme in https://github.com/rustfs/rustfs/pull/8921
- chore(deps): update flake.lock by @houseme in https://github.com/rustfs/rustfs/pull/8922
- fix(quota): keep reads available without snapshot-wide copies by @houseme in https://github.com/rustfs/rustfs/pull/8928
- test(ecstore): pin historical compression index reads by @houseme in https://github.com/rustfs/rustfs/pull/8925
- test(rio): cover maximum index varint totals by @overtrue in https://github.com/rustfs/rustfs/pull/8915
- fix(test): follow scanner schedules during multi-pool recovery by @overtrue in https://github.com/rustfs/rustfs/pull/8929
- fix(s3): normalize UploadPartCopy source versionId and populate source versioning state by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8890
- feat(scanner): expose startup phases and attempt deadlines by @houseme in https://github.com/rustfs/rustfs/pull/8931
- feat(heal): advertise MRF lifecycle reader capability by @overtrue in https://github.com/rustfs/rustfs/pull/8916
- perf(ecstore): coalesce delete inspection, settlement, and durability by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8932
- fix(heal): gate unresolved MRF lifecycle writes on reader support by @overtrue in https://github.com/rustfs/rustfs/pull/8918
- test(scanner): verify checkpoint debt across process restarts by @overtrue in https://github.com/rustfs/rustfs/pull/8938
- test(ecstore): verify encoding inputs against released shards by @houseme in https://github.com/rustfs/rustfs/pull/8933
- fix(storage): guard MPU recovery and startup RPC admission by @houseme in https://github.com/rustfs/rustfs/pull/8934
- chore(release): align installation references for 1.0.4 by @overtrue in https://github.com/rustfs/rustfs/pull/8940
- docs(release): reconcile main and clean completed release branches by @overtrue in https://github.com/rustfs/rustfs/pull/8945
- fix(scanner): retry unreadable cycle state in remote walk fence poll by @loopingz in https://github.com/rustfs/rustfs/pull/8939
- test(admin): cover target inventory HTTP acceptance by @houseme in https://github.com/rustfs/rustfs/pull/8942
- test(heal): verify backup recovery and tier owner handoff by @overtrue in https://github.com/rustfs/rustfs/pull/8935
- refactor(listing): keep paginated listing on ECStore only by @overtrue in https://github.com/rustfs/rustfs/pull/8936
- test(e2e): cover simultaneous multipart terminal contenders by @houseme in https://github.com/rustfs/rustfs/pull/8943
- test(e2e): validate conservative Abort recovery boundaries by @houseme in https://github.com/rustfs/rustfs/pull/8941
- refactor(listing): remove env-gated ListObjects index provider by @overtrue in https://github.com/rustfs/rustfs/pull/8948
- test(s3-client): make range preflight checks deterministic by @overtrue in https://github.com/rustfs/rustfs/pull/8952
- fix(storage): fence multipart and metadata recovery by @houseme in https://github.com/rustfs/rustfs/pull/8919
- fix(scanner): avoid per-set max_entries truncation before cross-set prefix usage merge by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8891
- test(e2e): avoid rescanning publication lock logs by @houseme in https://github.com/rustfs/rustfs/pull/8959
- chore(deps): update crypto-bigint to 0.7.10 by @houseme in https://github.com/rustfs/rustfs/pull/8962
- test: stabilize diagnostics and storage CI fixtures by @houseme in https://github.com/rustfs/rustfs/pull/8944
- refactor(listing): make cursors plain keys and opaque V2 tokens by @overtrue in https://github.com/rustfs/rustfs/pull/8950
- fix(listing): omit sub-quorum versions from ListObjectVersions by @overtrue in https://github.com/rustfs/rustfs/pull/8964
- perf(ecstore): optimize cold HEAD and GET metadata read paths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8960
- fix(storage): 404 for dangling objects and strict list quorum default by @overtrue in https://github.com/rustfs/rustfs/pull/8963
- refactor(listing): list latest versions with MinIO's listing quorum by @overtrue in https://github.com/rustfs/rustfs/pull/8965
- fix(ecstore): recover drives without serial reconnect delays by @houseme in https://github.com/rustfs/rustfs/pull/8972
- fix(deps): upgrade russh and replace vulnerable zstd codecs by @houseme in https://github.com/rustfs/rustfs/pull/8969
- perf(ecstore): coalesce write and multipart metadata I/O paths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8975
- fix(policy): substitute jwt and ldap variables in policies by @RaphaelFakhri in https://github.com/rustfs/rustfs/pull/8927
- fix(listing): keep the V1 NextMarker escape and document optimal limits by @overtrue in https://github.com/rustfs/rustfs/pull/8976
- fix(scanner): reduce memory retention and redundant scan work by @houseme in https://github.com/rustfs/rustfs/pull/8971
- fix(observability): correlate physical namespace lock releases by @houseme in https://github.com/rustfs/rustfs/pull/8974
- ci: remove never-green Performance A/B workflow by @majinghe in https://github.com/rustfs/rustfs/pull/8979
- fix(heal): group newly attached replacement disks by @overtrue in https://github.com/rustfs/rustfs/pull/8973
- docs(agents): add ecstore syscall and blocking-dispatch perf guardrails by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8987
- test(e2e): cover partial EC:4 node recovery by @houseme in https://github.com/rustfs/rustfs/pull/8983
- feat(tools): add read-only BTF prototype inspection by @houseme in https://github.com/rustfs/rustfs/pull/8985
- docs: define the dirty-journal metadata source contract by @houseme in https://github.com/rustfs/rustfs/pull/8984
- test(e2e): validate late multipart part transaction packets by @houseme in https://github.com/rustfs/rustfs/pull/8989
- test(scanner): add memory acceptance runner and budget probes by @houseme in https://github.com/rustfs/rustfs/pull/8988
- perf(ecstore): reduce multipart source fencing directory and read I/O by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8986
- ci: build linux-aarch64 releases on Ubicloud ARM by @majinghe in https://github.com/rustfs/rustfs/pull/8996
- fix(listing): leave delete recovery out of list requests by @overtrue in https://github.com/rustfs/rustfs/pull/8980
- docs(scanner): clarify incomplete census diagnostics by @overtrue in https://github.com/rustfs/rustfs/pull/9002
- test(ecstore): stabilize metadata fanout lifecycle checks by @overtrue in https://github.com/rustfs/rustfs/pull/8999
- fix(ecstore): select the latest version at read quorum like MinIO by @overtrue in https://github.com/rustfs/rustfs/pull/8982
- fix(heal): pace and parallelize replacement recovery by @overtrue in https://github.com/rustfs/rustfs/pull/9005
- feat(tools): inspect BTF scalar member layouts by @houseme in https://github.com/rustfs/rustfs/pull/9003
- fix(table-catalog): reload peers after table bucket toggle by @marshawcoco in https://github.com/rustfs/rustfs/pull/8994
- fix(decommission): defer copies that time out on a namespace lock by @overtrue in https://github.com/rustfs/rustfs/pull/9006
- fix(listing): treat key markers as literal keys by @overtrue in https://github.com/rustfs/rustfs/pull/8978
- test(connect): report drive probe timeout phases by @overtrue in https://github.com/rustfs/rustfs/pull/8977
- perf(ecstore): coalesce rename_part and multipart completion I/O by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9001
- docs(listing): describe degraded strict quorum limits by @overtrue in https://github.com/rustfs/rustfs/pull/8981
- fix(admin): make pool diagnostics partial-outage safe by @cxymds in https://github.com/rustfs/rustfs/pull/8995
- fix(scanner): add context to set cache failures by @overtrue in https://github.com/rustfs/rustfs/pull/9010
- fix(sftp): allow bucket-scoped root listings by @pentacore in https://github.com/rustfs/rustfs/pull/8998
- fix(scanner): summarize bucket root collection by @overtrue in https://github.com/rustfs/rustfs/pull/9013
- fix(lock): retain state during acquisition by @overtrue in https://github.com/rustfs/rustfs/pull/9014
- test(decommission): cover held target lock and partial-copy resume by @overtrue in https://github.com/rustfs/rustfs/pull/9016
- fix(ecstore): serve the latest readable version past dangling versions by @overtrue in https://github.com/rustfs/rustfs/pull/9004
- chore: remove redundant review skills by @overtrue in https://github.com/rustfs/rustfs/pull/9022
- fix(rebalance): reuse the target pool holding a dangling copy by @overtrue in https://github.com/rustfs/rustfs/pull/9018
- feat(observability): attribute local batch shard reads by @houseme in https://github.com/rustfs/rustfs/pull/8991
- chore(deps): refresh fuzz workspace dependencies by @houseme in https://github.com/rustfs/rustfs/pull/9024
- fix(ecstore): resolve dangling latest versions in metadata updates by @overtrue in https://github.com/rustfs/rustfs/pull/9009
- fix(ecstore): harden stale multipart cleanup by @houseme in https://github.com/rustfs/rustfs/pull/9023
- feat(scanner): share node admission with background heal by @overtrue in https://github.com/rustfs/rustfs/pull/8903
- ci: move lightweight jobs to GitHub-hosted Ubuntu by @majinghe in https://github.com/rustfs/rustfs/pull/9027
- refactor(storage): reuse dirty journal replay JSON frames by @houseme in https://github.com/rustfs/rustfs/pull/9026
- feat(plugins): add minimal original-user runner integration by @overtrue in https://github.com/rustfs/rustfs/pull/9017
- test(storage): pin dirty journal JSON recursion boundary by @houseme in https://github.com/rustfs/rustfs/pull/9029
- refactor(storage): replay decoded dirty journal records by @houseme in https://github.com/rustfs/rustfs/pull/9030
- fix(heal): coordinate delete recovery and preserve transient errors by @overtrue in https://github.com/rustfs/rustfs/pull/9031
- test(targets): bound failing-delete replay observations by @houseme in https://github.com/rustfs/rustfs/pull/9032
- perf(ecstore): reuse bucket incarnation fences across copy and metadata paths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9034
- feat(s3): serve Veeam SOSAPI system and capacity XML by @loverustfs in https://github.com/rustfs/rustfs/pull/9007
- fix(metrics): reject missing histogram counts by @overtrue in https://github.com/rustfs/rustfs/pull/9039
- fix(ecstore): prove multipart part sizes before cleanup by @houseme in https://github.com/rustfs/rustfs/pull/9037
- test(heal): keep rename-tail repair out of isolated root heal by @overtrue in https://github.com/rustfs/rustfs/pull/9041
- fix: keep incomplete scanner measurements unknown by @overtrue in https://github.com/rustfs/rustfs/pull/9044
- perf(ecstore): streamline local GET batch reads by @houseme in https://github.com/rustfs/rustfs/pull/9043
- fix(admin): protect notification target edits by @houseme in https://github.com/rustfs/rustfs/pull/9048
- fix: account for shared CPU pressure in background admission by @overtrue in https://github.com/rustfs/rustfs/pull/9050
- perf(heal): stream MRF intent digests by @overtrue in https://github.com/rustfs/rustfs/pull/9051
- fix(ecstore): remove misleading remote lock log by @houseme in https://github.com/rustfs/rustfs/pull/9042
- test(validation): run canonical cases and build pinned Heal tools by @cxymds in https://github.com/rustfs/rustfs/pull/8455
- fix(tiering): diagnose blocked tier deletion and retry cleanup by @cxymds in https://github.com/rustfs/rustfs/pull/9035
- feat(ecstore): add sampled batch CPU diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/9019
- perf(lifecycle): skip size reads for disabled rules by @houseme in https://github.com/rustfs/rustfs/pull/9046
- fix(storage): reject unwritable data volumes during startup by @majinghe in https://github.com/rustfs/rustfs/pull/9056
- chore(deps): refresh crates and adopt released aws-sigv4 by @houseme in https://github.com/rustfs/rustfs/pull/9047
- chore: strengthen agent delivery standards and validation by @overtrue in https://github.com/rustfs/rustfs/pull/9058
- ci: unify validation planning, artifacts and suite orchestration by @overtrue in https://github.com/rustfs/rustfs/pull/9059
- ci: qualify workspace packages that share a name with a dependency by @overtrue in https://github.com/rustfs/rustfs/pull/9065
- ci: let failed-job reruns reuse the producer's test archives by @overtrue in https://github.com/rustfs/rustfs/pull/9071
- ci: enforce affected validation and rehearse bounded shards by @overtrue in https://github.com/rustfs/rustfs/pull/9070
- fix(audit): emit entries for multipart parts and bucket config writes by @aepod in https://github.com/rustfs/rustfs/pull/9067
- ci(ft,heal,chain): FT gate 54, heal budget, and a temporary performance lane disable by @majinghe in https://github.com/rustfs/rustfs/pull/9057
- fix: preserve PUT lock failure diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/9062
- fix(site-replication): grant replicator s3:ForceDeleteObject by @timootten in https://github.com/rustfs/rustfs/pull/9069
- fix(replication): count force-delete outcomes in replication stats by @reatang in https://github.com/rustfs/rustfs/pull/9072
- fix(audit): emit a bounded audit entry for authorization denials by @aepod in https://github.com/rustfs/rustfs/pull/9073
- fix(s3select): case-insensitive enums, LINES key order, path names by @babs in https://github.com/rustfs/rustfs/pull/9021
- perf(ecstore): fuse local PUT/DELETE commit I/O and eliminate redundant metadata disk reads (#9038) by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9064
- fix(ci): accept binary target IDs in workspace shards by @overtrue in https://github.com/rustfs/rustfs/pull/9075
- docs: require removing task build output before handoff by @overtrue in https://github.com/rustfs/rustfs/pull/9078
- fix(scanner): distinguish missing heal identity fields by @overtrue in https://github.com/rustfs/rustfs/pull/9000
- fix(scanner): align unversioned overflow heal options by @overtrue in https://github.com/rustfs/rustfs/pull/9036
- fix(scanner): report incomplete collector observations by @overtrue in https://github.com/rustfs/rustfs/pull/9012
- fix(heal): preserve data when removal is disabled by @overtrue in https://github.com/rustfs/rustfs/pull/9040
- fix: reject unverified scanner performance evidence by @overtrue in https://github.com/rustfs/rustfs/pull/9049
- feat: classify scanner metadata calls by diagnostic prefix by @overtrue in https://github.com/rustfs/rustfs/pull/9052
- fix(heal): prevent lock timeouts during disk recovery by @overtrue in https://github.com/rustfs/rustfs/pull/9054
- perf(scanner): batch proportional pacing in folder walkers by @overtrue in https://github.com/rustfs/rustfs/pull/8850
- fix(scanner): track heal generation and payload observations by @overtrue in https://github.com/rustfs/rustfs/pull/9008
- feat(scanner): certify cold peer buckets during hot writes by @overtrue in https://github.com/rustfs/rustfs/pull/8970
- feat(storage): share physical admission across scanner and heal by @overtrue in https://github.com/rustfs/rustfs/pull/8911
- feat(scanner): fair bucket service across restarts and budgeted first enumeration by @overtrue in https://github.com/rustfs/rustfs/pull/9083
- fix(console): buffer brotli responses to set Content-Length for Firefox (#9076) by @SavvySloth in https://github.com/rustfs/rustfs/pull/9079
- fix(console): strip Content-Encoding on brotli buffer failure by @overtrue in https://github.com/rustfs/rustfs/pull/9085
- test(heal): align cleanup tests with removal-disabled heals by @overtrue in https://github.com/rustfs/rustfs/pull/9087
- chore(deps): refresh workspace dependencies by @houseme in https://github.com/rustfs/rustfs/pull/9080
- docs(testing): index event-class drills and retained CI evidence by @overtrue in https://github.com/rustfs/rustfs/pull/9088
- ci: record CI01 measurements, drill evidence and fix the OIDC live gate by @overtrue in https://github.com/rustfs/rustfs/pull/9091
- ci: move specialized lanes off the pull-request path by @overtrue in https://github.com/rustfs/rustfs/pull/9093
- chore(e2e): isolated harness event drill (close after evidence) by @overtrue in https://github.com/rustfs/rustfs/pull/9089
- feat(release): gate publication on candidate certification (R01) by @overtrue in https://github.com/rustfs/rustfs/pull/9090
- ci: stamp the plan contract and rename the workspace lint-and-build key by @overtrue in https://github.com/rustfs/rustfs/pull/9095
- fix(s3): guard conditional multipart pool errors by @houseme in https://github.com/rustfs/rustfs/pull/9092
- fix(ecstore): clear stale BucketMetadataSys on ECStore drop by @overtrue in https://github.com/rustfs/rustfs/pull/9097
- fix(scanner): rebuild unreadable usage floor instead of stopping leader iteration by @overtrue in https://github.com/rustfs/rustfs/pull/9101
- perf(ecstore): optimize listing, versioned put, delete, and multipart (#9077) by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9094
- test(console): strengthen brotli buffer middleware test coverage by @SavvySloth in https://github.com/rustfs/rustfs/pull/9098
- test(e2e): stabilize mixed-version coordinator assertion against leader-lock refresh gaps by @overtrue in https://github.com/rustfs/rustfs/pull/9103
- perf(ecstore): optimize multipart commit, delete receipts, and fsync by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9105
- fix(s3-tables): clean empty catalogs and cache registration reads by @GatewayJ in https://github.com/rustfs/rustfs/pull/9063
- chore(deps): update flake.lock by @houseme in https://github.com/rustfs/rustfs/pull/9108
- perf(s3): streamline conditional multipart preflight by @houseme in https://github.com/rustfs/rustfs/pull/9099
- ci(validation): sweep the migrated canonical validation cases nightly by @majinghe in https://github.com/rustfs/rustfs/pull/9107
- perf(ecstore,rio,utils): accelerate MD5 ETag hashing and SWAR disk path checks by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9110
- fix(test): use available Docker privileges in OIDC live gate by @overtrue in https://github.com/rustfs/rustfs/pull/9109
- docs(scanner): define prefix statistics contract by @houseme in https://github.com/rustfs/rustfs/pull/9116
- test(filemeta): cover visible version after tier cleanup by @houseme in https://github.com/rustfs/rustfs/pull/9115
- feat(tls): add opt-in fips feature for aws-lc-rs and rustls by @boylee1111 in https://github.com/rustfs/rustfs/pull/9084
- chore(deps): update crates and fix storage CI regressions by @houseme in https://github.com/rustfs/rustfs/pull/9111
- ci(validation): resolve the newest nightly build on scheduled sweeps by @majinghe in https://github.com/rustfs/rustfs/pull/9114
- fix(ecstore): release retained file descriptor cache invalidations by @GatewayJ in https://github.com/rustfs/rustfs/pull/9112
- perf(ecstore): shard disk path lock registries with SWAR byte keys by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9127
- chore(deps): bump the dependencies group across 1 directory with 5 updates by @dependabot[bot] in https://github.com/rustfs/rustfs/pull/9113
- test(e2e): honor namespace backpressure in mixed workload by @houseme in https://github.com/rustfs/rustfs/pull/9122
- ci: run distributed and upgrade e2e on schedule only by @majinghe in https://github.com/rustfs/rustfs/pull/9126
- fix(table-catalog): resolve superseded staged commits by @marshawcoco in https://github.com/rustfs/rustfs/pull/9124
- ci(nightly): dispatch nightly-candidate-ready after asset publish by @majinghe in https://github.com/rustfs/rustfs/pull/9131
- fix(s3select-api): clamp overflowing u64 GetRange values to i64::MAX by @weile321 in https://github.com/rustfs/rustfs/pull/9118
- fix(tls): unify FIPS provider policy across clients by @houseme in https://github.com/rustfs/rustfs/pull/9125
- fix(metrics): reconcile peer-health gauge on successful RPCs and probes by @houseme in https://github.com/rustfs/rustfs/pull/9134
- perf(filemeta): grow metacache read chunks geometrically by @houseme in https://github.com/rustfs/rustfs/pull/9133
- fix(replication): finish writeback for already purged versions by @overtrue in https://github.com/rustfs/rustfs/pull/9135
- fix(heal): preserve lock, format, and repair identity by @houseme in https://github.com/rustfs/rustfs/pull/9132
- feat(fips): route internode RPC HMAC through aws-lc-rs FIPS by @boylee1111 in https://github.com/rustfs/rustfs/pull/9137
- fix(replication): skip site-replication rules in replica delete fan-out by @reatang in https://github.com/rustfs/rustfs/pull/9138
- chore(deps): refresh crate requirements and lockfile by @houseme in https://github.com/rustfs/rustfs/pull/9140
- perf(ecstore,rpc): shard hot-path delete, multipart, and RPC lock tables by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9143
- fix(heal): treat SlowDown as a rate signal and bound page churn by @houseme in https://github.com/rustfs/rustfs/pull/9144
- fix(replication): replay the MRF journal periodically by @reatang in https://github.com/rustfs/rustfs/pull/9139
- ci(nightly): embed the console UI in the GNU nightly build by @majinghe in https://github.com/rustfs/rustfs/pull/9158
- fix(auth): canonicalize s3:VersionId before policy evaluation by @overtrue in https://github.com/rustfs/rustfs/pull/9150
- fix(admin): keep Vault local-file reads on the operator connection by @overtrue in https://github.com/rustfs/rustfs/pull/9152
- fix(s3): reserve the XLDIR directory-marker suffix in client keys by @overtrue in https://github.com/rustfs/rustfs/pull/9153
- fix(ecstore): judge the null version a versionless delete removes by @overtrue in https://github.com/rustfs/rustfs/pull/9151
- fix(auth): build policy conditions from the value a write stores by @overtrue in https://github.com/rustfs/rustfs/pull/9159
- fix(policy): close condition, action, principal and resource gaps by @overtrue in https://github.com/rustfs/rustfs/pull/9160
- fix(ecstore): gate null-version overwrites under Object Lock by @overtrue in https://github.com/rustfs/rustfs/pull/9157
- fix(iam): close identity, session and admin-authorization gaps by @overtrue in https://github.com/rustfs/rustfs/pull/9163
- fix(proxies,targets,obs): bound untrusted input in leaf crates by @overtrue in https://github.com/rustfs/rustfs/pull/9166
- fix(protocols,kms,keystone): enforce client CA, protect the KMS probe by @overtrue in https://github.com/rustfs/rustfs/pull/9168
- fix(api): keep SlowDownRead off write-path quorum failures by @houseme in https://github.com/rustfs/rustfs/pull/9149
- chore(deps): refresh Cargo dependencies by @houseme in https://github.com/rustfs/rustfs/pull/9156
- fix(s3): honor presigned x-amz-meta-* query parameters by @houseme in https://github.com/rustfs/rustfs/pull/9146
- perf(ecstore): skip unmatched FdCache scans and maintenance wakeups by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9165
- perf(ecstore): parallelize bulk-delete lock and metadata fan-out by @houseme in https://github.com/rustfs/rustfs/pull/9155
- fix(s3): report malformed multipart upload IDs as NoSuchUpload by @KarlEmm in https://github.com/rustfs/rustfs/pull/9147
- feat(container): add declarative bucket bootstrap by @jmeiracorbal in https://github.com/rustfs/rustfs/pull/9162
- fix(io-core): preserve pooled capacity and accounting by @houseme in https://github.com/rustfs/rustfs/pull/9171
- fix(s3): treat duplicate CreateBucket as owned by the requester by @cxymds in https://github.com/rustfs/rustfs/pull/9167
- fix(ecstore): streamline lock RPC and listing ownership by @houseme in https://github.com/rustfs/rustfs/pull/9176
- fix(audit): preserve OIDC identity in S3 request audits by @GatewayJ in https://github.com/rustfs/rustfs/pull/9178
- fix(obs): add fine-grained object lock histograms by @houseme in https://github.com/rustfs/rustfs/pull/9177
- fix(storage): bound heal retries and recover pool metadata by @overtrue in https://github.com/rustfs/rustfs/pull/9164
- fix(s3,ecstore,table-catalog): bound work driven by client input by @overtrue in https://github.com/rustfs/rustfs/pull/9172
- chore(ci): bump overtrue/cla-bot to v0.1.0 by @overtrue in https://github.com/rustfs/rustfs/pull/9188
- fix(server): bound rejoin waits and preserve recovery ownership by @houseme in https://github.com/rustfs/rustfs/pull/9181
- fix(sftp): put directory objects as trailing-slash keys by @overtrue in https://github.com/rustfs/rustfs/pull/9180
- fix(ecstore): retry failed internode channel prewarm by @houseme in https://github.com/rustfs/rustfs/pull/9186
- feat(ecstore): record unary gRPC operation duration by @houseme in https://github.com/rustfs/rustfs/pull/9187
- ci: bump overtrue/cla-bot to v0.1.1 by @overtrue in https://github.com/rustfs/rustfs/pull/9189
- fix(observability): avoid duplicate process metric labels by @houseme in https://github.com/rustfs/rustfs/pull/9182
- perf(ecstore): fuse overwrite commits and optimize delete recovery by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9194
- fix(ecstore): preserve multipart shards within write budgets by @cxymds in https://github.com/rustfs/rustfs/pull/9197
- fix(lock): converge cleanup after lost release acknowledgements by @cxymds in https://github.com/rustfs/rustfs/pull/9199
- fix(container): unify directory setup and startup diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/9201
- fix(scanner): bound wide bucket-root fanout memory by @overtrue in https://github.com/rustfs/rustfs/pull/9193
- fix(cors): isolate cache variants and streamline policy evaluation by @houseme in https://github.com/rustfs/rustfs/pull/9203
- fix(webdav): support configured browser CORS access by @houseme in https://github.com/rustfs/rustfs/pull/9205
- test(e2e): fix quota and conditional write fixtures by @overtrue in https://github.com/rustfs/rustfs/pull/9210
- test(storage): reproduce HTTPS rejoin readiness in Docker by @houseme in https://github.com/rustfs/rustfs/pull/9206
- fix(s3): retain protected multipart ETags in object listings by @houseme in https://github.com/rustfs/rustfs/pull/9208
- fix(lock): preserve acquisition progress during multipart uploads by @cxymds in https://github.com/rustfs/rustfs/pull/9209
- fix(runtime): release retained replay and allocator memory by @overtrue in https://github.com/rustfs/rustfs/pull/9211
- fix(ecstore): preserve ownership across multi-pool recovery by @overtrue in https://github.com/rustfs/rustfs/pull/9212
- fix(webdav): join connection and reload tasks on shutdown by @overtrue in https://github.com/rustfs/rustfs/pull/9213
- fix(storage): fence bounded deletes during rolling upgrades by @overtrue in https://github.com/rustfs/rustfs/pull/9214
- fix: preserve usage generations and unify request tracing by @houseme in https://github.com/rustfs/rustfs/pull/9204
- fix(cors): preserve readiness and complete cache selectors by @houseme in https://github.com/rustfs/rustfs/pull/9207
- fix(table-catalog): reject storage credentials for catalog access by @marshawcoco in https://github.com/rustfs/rustfs/pull/9185
- feat(tier): support native Azure Blob endpoints by @cxymds in https://github.com/rustfs/rustfs/pull/9200
- feat(observability): record unary read RPC durations by @houseme in https://github.com/rustfs/rustfs/pull/9202
- fix(ecstore): complete and abort native multipart uploads on Windows by @reatang in https://github.com/rustfs/rustfs/pull/9191
- test(rio,ecstore): add negative-branch durability unit tests by @boylee1111 in https://github.com/rustfs/rustfs/pull/9216
- fix(swift): preserve bucket metadata with Swift tag values by @overtrue in https://github.com/rustfs/rustfs/pull/9218
- fix(decommission): reserve owned source usage during activation by @overtrue in https://github.com/rustfs/rustfs/pull/9220
- fix(ci): bound workspace archive builds to two workers by @overtrue in https://github.com/rustfs/rustfs/pull/9222
- fix(ci,ecstore): restore validation and defer capacity exhaustion by @overtrue in https://github.com/rustfs/rustfs/pull/9223
- refactor(table-catalog): retire durable-strong backing by @marshawcoco in https://github.com/rustfs/rustfs/pull/9130
- fix: correct scanner pacing and unverified MRF outcomes by @cxymds in https://github.com/rustfs/rustfs/pull/9225
- chore(deps): update flake.lock by @houseme in https://github.com/rustfs/rustfs/pull/9236
- fix(cache): respect process cgroup memory limits by @overtrue in https://github.com/rustfs/rustfs/pull/9232
- fix(rpc): size and reserve replay cache for compact entries by @overtrue in https://github.com/rustfs/rustfs/pull/9233
- fix(select): bound Parquet allocations before decoding by @overtrue in https://github.com/rustfs/rustfs/pull/9231
- perf(ecstore): optimize PUT, DELETE, and multipart commit hotpaths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9227
- fix: reduce scanner backoff and classify downstream closures by @cxymds in https://github.com/rustfs/rustfs/pull/9235
- ci: repair e2e selection and verify tool downloads via API by @cxymds in https://github.com/rustfs/rustfs/pull/9240
- fix(select): bound LZ4 scratch and Arrow schema expansion by @overtrue in https://github.com/rustfs/rustfs/pull/9237
- fix(rpc): bound replay memory and atomically admit signed requests by @overtrue in https://github.com/rustfs/rustfs/pull/9238
- fix(ecstore): decouple pool metadata health from the authority gate by @overtrue in https://github.com/rustfs/rustfs/pull/9241
- fix(catalog): enumerate table owners without skipping namespaces by @overtrue in https://github.com/rustfs/rustfs/pull/9242
- fix(ecstore): remove hardlinked backup during delete rollback by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9239
- fix(tier): recover orphaned prepared mutations by @overtrue in https://github.com/rustfs/rustfs/pull/9246
- chore(release): prepare 1.0.5 by @overtrue in https://github.com/rustfs/rustfs/pull/9249
- fix: preserve scanner backlog authority after pool replacement by @overtrue in https://github.com/rustfs/rustfs/pull/9252
- revert(release): defer certification rollout for 1.0.5 by @overtrue in https://github.com/rustfs/rustfs/pull/9254
- @alpbeysir made their first contribution in https://github.com/rustfs/rustfs/pull/8555
- @limitcool made their first contribution in https://github.com/rustfs/rustfs/pull/8568
- @cozima made their first contribution in https://github.com/rustfs/rustfs/pull/8860
- @jim-czcbangkai made their first contribution in https://github.com/rustfs/rustfs/pull/8889
- @loopingz made their first contribution in https://github.com/rustfs/rustfs/pull/8939
- @RaphaelFakhri made their first contribution in https://github.com/rustfs/rustfs/pull/8927
- @pentacore made their first contribution in https://github.com/rustfs/rustfs/pull/8998
- @aepod made their first contribution in https://github.com/rustfs/rustfs/pull/9067
- @timootten made their first contribution in https://github.com/rustfs/rustfs/pull/9069
- @SavvySloth made their first contribution in https://github.com/rustfs/rustfs/pull/9079
- @boylee1111 made their first contribution in https://github.com/rustfs/rustfs/pull/9084
- @weile321 made their first contribution in https://github.com/rustfs/rustfs/pull/9118
- @jmeiracorbal made their first contribution in https://github.com/rustfs/rustfs/pull/9162
Full Changelog: https://github.com/rustfs/rustfs/compare/1.0.4...1.0.5
10.2.0
QuestDB 10.2.0 adds GROUPING SETS, ROLLUP and CUBE, row-level retention for materialized views, a DEDUP SKIP mode that keeps the first-written row, and opt-in power-loss durability for WAL tables, enabled with cairo.commit.mode=adaptive. QWP ingestion of small messages is much faster, and this release fixes a large batch of wrong-result, crash and hang bugs in queries, out-of-order ingestion and Parquet partitions.
This release contains a few breaking changes. Read the Breaking changes section before you upgrade, especially if you create materialized views with LIMIT or window functions, send the designated timestamp twice over QWP, or may need to downgrade after using DEDUP SKIP.
For any questions or feedback, please join us on Slack or on Discourse.
See also our prettier release notes page.
CREATE MATERIALIZED VIEWrejectsLIMITin queries that read the base table, and base-table window functions nested in expressions orSAMPLE BYsubqueries. Replaying olderSHOW CREATEoutput that contains them fails. #7263- QWP rejects table blocks that carry the designated timestamp twice, once through
at(...)and once as a named column. Before this change, QuestDB accepted them and stored wrong timestamps. A sender that uses both forms on one table now gets a schema error on every later batch for that table. #8052 - An unknown
cairo.commit.modevalue now fails startup, instead of silently selectingnosync. #7411 - After 10.2.0 has run on a database, downgrading, writing with the older version and upgrading again is not supported. See downgrade to an earlier release. #7411
- Downgrading after using
DEDUP SKIP: older versions treatSKIPtables asUPSERTwithout an error, and suspend WAL apply when they replay a loggedALTER TABLE ... DEDUP SKIP. #7885
GROUP BY and SAMPLE BY now accept ROLLUP, CUBE and GROUPING SETS, with the GROUPING() and GROUPING_ID() functions. One query returns subtotals and a grand total in a single scan of the input:
SELECT symbol, side, sum(amount)
FROM trades
GROUP BY ROLLUP(symbol, side);
Grouping sets run in parallel where the plan allows. SAMPLE BY grouping sets support FILL with NULL, constants or NONE. cairo.sql.max.grouping.sets caps how many grouping sets one query expands to (default 4096). Grouping sets do not vectorize: they ran 1.4x slower than the equivalent UNION ALL of plain GROUP BYs serially, and up to 6.9x slower in parallel, in the PR's benchmark. #6853
Materialized views can now be passthrough views: a filtered copy of a table (SELECT ... WHERE, no SAMPLE BY), kept up to date as rows arrive. The new EXPIRE ROWS policy adds row-level retention on top, and hides expired rows of a materialized view from every query: WHEN <predicate>, KEEP LATEST, KEEP [N] HIGHEST|LOWEST, or a window predicate. For monotonic WHEN policies, such as ts < now(), a background job also frees the disk; cairo.mat.view.row.expiry.cleanup.* settings control it. ALTER MATERIALIZED VIEW ... SET EXPIRE ROWS and ... DROP EXPIRE change a view's policy. #7263
The new DEDUP SKIP mode keeps the first-written row and drops later duplicates, where UPSERT keeps the last one. CREATE TABLE, CTAS and ALTER TABLE ... DEDUP accept it, and SHOW CREATE TABLE prints it. Commits that hold only duplicates leave native and Parquet partitions untouched, and resending unchanged rows into DEDUP UPSERT Parquet partitions no longer rewrites them. #7885
cairo.commit.mode=adaptive makes WAL tables survive power loss for much less than sync mode costs. QuestDB flushes the WAL on commit, applies it to table files without per-apply flushes, and rebuilds the table files from the WAL after a crash, so the server restarts with consistent tables instead of failing on a damaged partition. cairo.adaptive.commit.group.window (default 50 ms) batches flushes across commits, so commits acknowledged within the last window can be lost. Pair it with request_durable_ack=local on QWP clients (local,replicated on QuestDB Enterprise) to be told when each batch is on disk, or set the window to 0. The default stays nosync. #7411
- QWP over WebSocket ingests one-row messages at about 3.9M rows/s, up from about 210k, on the PR's benchmark. Large messages are unchanged. The wire protocol and ack semantics are unchanged. #8110
- WAL apply no longer falls back to slow one-by-one mode on backlogs of small out-of-order transactions that span a wide timestamp range, where it could fall behind ingestion indefinitely. #8008
- With
cairo.file.async.munmap.enabled, a released file mapping stays cached until the background job unmaps it, so reopening the same file reuses it without a newmmap. #7751
- Repair Parquet indexes after upgrading from 9.3.4-10.0.1. Those versions could leave stale metadata after merging out-of-order rows into Parquet partitions, so index scans could miss rows and deduplication could keep duplicates.
ALTER TABLE ... FORCE REINDEX PARQUETrepairs affected partitions online;ADD INDEXand out-of-order writes repair them automatically. Until a partition is repaired, index queries on it fail withindex does not cover parquet partition datainstead of returning wrong rows. #8139 - Quiet QWP connections no longer block WAL cleanup. A connection idle for
qwp.min.idle.ms.before.writer.release(default 30s,0disables) releases its WAL writers. #7936 - WAL apply no longer pauses when partition compaction holds the table writer. #8194
This release fixes wrong results, crashes and hangs in RIGHT/FULL hash joins, SPLICE JOIN, WINDOW JOIN, set operations over geohashes, SAMPLE BY with month and year strides, LIMIT and FILL, and parallel filtered queries under concurrent load. It also fixes queries returning wrong rows during out-of-order ingestion, index scans on Parquet partitions, covering indexes returning NULLs after restore or column changes, materialized views after a base column type change, crashes and hangs when an out-of-order commit fails, and querying narrow DECIMAL columns over QWP.
- feat(sql): add GROUPING SETS, ROLLUP, CUBE support by @javier in #6853
- feat(core): breaking change 💥 - add row-level retention to materialized views by @nwoolmer in #7263
- feat(sql): breaking change 💥 - add DEDUP SKIP mode to keep existing rows on duplicate keys by @bluestreak01 in #7885
- feat(core): Introduce new
adaptivecommit mode by @nwoolmer in #7411
- perf(qwp): speed up QWP WebSocket ingestion of small messages by @jerrinot in #8110
- perf(core): treat async munmap as an eviction hint, revive released mappings by @ideoma in #7751
- fix(sql): fix INSERT ... SELECT with a column list naming the wrong column in type errors by @eugenels in #7992
- fix(core): fix crash and hangs when an out-of-order commit fails by @bluestreak01 in #8063
- fix(http): fix client timeouts when following redirects by @jerrinot in #8084
- fix(sql): fix wrong SAMPLE BY results for month and year strides, LIMIT and mixed FILL by @puzpuzpuz in #8053
- fix(sql): fix wrong values in materialized views after a base column type change by @eugenels in #8039
- fix(sql): fix crashes and wrong results in RIGHT/FULL hash joins, SPLICE JOIN and keyed SAMPLE BY FILL by @ideoma in #8109
- fix(core): release native column files after converting a split active partition to Parquet by @RaphDal in #8065
- fix(core): fix queries returning wrong rows or failing during out-of-order ingestion by @jerrinot in #7935
- fix(core): fix covering index returning NULLs after restore and column changes by @ideoma in #8117
- fix(qwp): fix quiet QWP connections blocking WAL cleanup by @jerrinot in #7936
- fix(core): fix WAL apply pausing when partition compaction holds the table writer by @kafka1991 in #8194
- fix(core): fix wrong rows from index scans and conversions of parquet partitions by @ideoma in #7988
- fix(core): fix WAL apply falling back to slow 1-by-1 mode on backlogs with wide timestamp range by @ideoma in #8008
- fix(sql): fix wrong results and internal errors in WINDOW JOIN, set operations, SAMPLE BY FILL, string functions and UDP ingestion by @eugenels in #8001
- chore(qwp): breaking change 💥 - reject conflicting designated timestamps by @RaphDal in #8052
- fix(qwp): fix querying DECIMAL columns with precision up to 9 over QWP egress by @sklarsa in #8134
- fix(core): fix missing indexed rows after changing column types on Parquet tables by @ideoma in #8236
- fix(sql): fix SAMPLE BY FILL(LINEAR) returning NULL between large DOUBLE values by @eugenels in #8042
- fix(core): fix checkpoints of altered views and flaky cookie expiry tests by @glasstiger in #8248
- fix(core): fix parquet index repair and deduplication after upgrades by @ideoma in #8139
- fix(core): fix parallel queries hanging under concurrent load and skipping rows in batched PG Wire fetches by @kafka1991 in #8278
Full Changelog: 10.1.0...10.2.0
milvus-3.0.6
Release note is coming soon...
RustFS 1.0.5-preview.1 (preview)
- fix(scanner): treat replication status writebacks as status-class hints by @reatang in https://github.com/rustfs/rustfs/pull/8509
- fix(s3): preserve catalog lock failures at the error boundary by @houseme in https://github.com/rustfs/rustfs/pull/8550
- chore(deps): refresh Rustls and TAR parser test crates by @houseme in https://github.com/rustfs/rustfs/pull/8547
- fix(s3): align raw disk-full failures with capacity refusals by @houseme in https://github.com/rustfs/rustfs/pull/8553
- feat(iam): support wildcard in IAM policy resources by @alpbeysir in https://github.com/rustfs/rustfs/pull/8555
- test(e2e): wait for heal control before deep heal after restart by @overtrue in https://github.com/rustfs/rustfs/pull/8554
- feat(s3): support conditional bulk deletes by @cxymds in https://github.com/rustfs/rustfs/pull/8535
- fix(ecstore): retain pool metadata repair ownership by @houseme in https://github.com/rustfs/rustfs/pull/8552
- fix(scanner): use observational leases for incomplete snapshots by @houseme in https://github.com/rustfs/rustfs/pull/8561
- fix(scanner): clear transient cycle recovery on follower lock contention by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8566
- fix(data-usage): retain complete totals when a set is missing by @marshawcoco in https://github.com/rustfs/rustfs/pull/8558
- fix(s3): make an unsupported delete participant retryable and explain it by @overtrue in https://github.com/rustfs/rustfs/pull/8574
- fix(replication): skip the replica ETag audit for encrypted sources by @overtrue in https://github.com/rustfs/rustfs/pull/8573
- fix(ecstore): box the transition payload of CurrentDeleteGeneration by @overtrue in https://github.com/rustfs/rustfs/pull/8581
- fix(scanner): persist partial progress after budget cancellation by @houseme in https://github.com/rustfs/rustfs/pull/8578
- test(replication): cover SSE-S3 replicas on ETag-computing targets by @reatang in https://github.com/rustfs/rustfs/pull/8583
- fix(ecstore): quiet routine admin info timing logs by @houseme in https://github.com/rustfs/rustfs/pull/8584
- fix(ecstore): merge migrated copies across inline layouts by @cxymds in https://github.com/rustfs/rustfs/pull/8588
- fix(rpc): clarify stale epoch rejection diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/8585
- feat(diagnostics): port read attribution to main by @houseme in https://github.com/rustfs/rustfs/pull/8579
- fix(multipart): retain commits and reclaim verified orphan staging by @cxymds in https://github.com/rustfs/rustfs/pull/8571
- fix(rebalance): wait for readiness and admit peer workers by @cxymds in https://github.com/rustfs/rustfs/pull/8570
- test(e2e): gate the rc.5 baseline restarts on drive re-admission by @reatang in https://github.com/rustfs/rustfs/pull/8595
- test(e2e): send the quota batch delete in verbose mode by @overtrue in https://github.com/rustfs/rustfs/pull/8589
- fix(ci): stop PRs for sync conflicts by @overtrue in https://github.com/rustfs/rustfs/pull/8598
- test(s3-select): fix schema reference field ordering by @houseme in https://github.com/rustfs/rustfs/pull/8599
- chore(deps): refresh workspace dependencies by @houseme in https://github.com/rustfs/rustfs/pull/8597
- sync: merge main 2026-10-15 (conflicts) by @houseme in https://github.com/rustfs/rustfs/pull/8557
- fix(ecstore): unify bounded delete recovery across upgrades by @houseme in https://github.com/rustfs/rustfs/pull/8594
- fix(lifecycle): read exact object versions after writes by @cxymds in https://github.com/rustfs/rustfs/pull/8601
- feat(scanner): decouple bucket walkers from disk count by @reatang in https://github.com/rustfs/rustfs/pull/8539
- fix(heal): recover replacements after pool removal by @cxymds in https://github.com/rustfs/rustfs/pull/8600
- fix(quota): keep writes available with a degraded fleet by @cxymds in https://github.com/rustfs/rustfs/pull/8604
- fix(ecstore): box large enum variant in CurrentDeleteGeneration by @overtrue in https://github.com/rustfs/rustfs/pull/8576
- fix(replication): locate encrypted replicas without comparing ETags by @reatang in https://github.com/rustfs/rustfs/pull/8602
- fix(ecstore): publish delete rollback backups past Windows MAX_PATH by @reatang in https://github.com/rustfs/rustfs/pull/8606
- fix(ecstore): publish delete rollback files via verbatim-safe rename by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8607
- fix(scanner): retain partial progress without a usage update by @marshawcoco in https://github.com/rustfs/rustfs/pull/8612
- fix(connect): prepare profile fixtures before timed IPC by @marshawcoco in https://github.com/rustfs/rustfs/pull/8616
- chore(release): align installation references for 1.0.2 by @overtrue in https://github.com/rustfs/rustfs/pull/8617
- fix(connect): retain bounded object cleanup diagnostics by @marshawcoco in https://github.com/rustfs/rustfs/pull/8624
- fix: resolve clippy warnings from Rust 1.99 lints by @overtrue in https://github.com/rustfs/rustfs/pull/8619
- feat(table-catalog): plan maintenance on durable backing by @marshawcoco in https://github.com/rustfs/rustfs/pull/8567
- fix(s3): return 412 for conditional multipart uploads on existing keys by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8625
- fix(admin): preserve dirty usage over observed snapshots by @marshawcoco in https://github.com/rustfs/rustfs/pull/8627
- fix(ecstore): unify object key admission for Windows hosts by @reatang in https://github.com/rustfs/rustfs/pull/8632
- fix(startup): drive startup on an explicitly sized thread by @reatang in https://github.com/rustfs/rustfs/pull/8630
- fix(ecstore): resolve Windows drive paths in URL endpoints by @reatang in https://github.com/rustfs/rustfs/pull/8629
- fix(lifecycle): compact inline versions once per deletion batch by @cxymds in https://github.com/rustfs/rustfs/pull/8634
- fix(ecstore): keep Windows disk roots out of verbatim form by @reatang in https://github.com/rustfs/rustfs/pull/8633
- fix(lifecycle): skip empty delete replication tasks by @cxymds in https://github.com/rustfs/rustfs/pull/8628
- fix(ecstore): share cache and lock identity across Windows key aliases by @reatang in https://github.com/rustfs/rustfs/pull/8635
- fix(utils): harden Win32 volume probes and flag Windows network drives by @reatang in https://github.com/rustfs/rustfs/pull/8631
- fix(ecstore): converge partial pool identity writes by @cxymds in https://github.com/rustfs/rustfs/pull/8636
- fix(ci): refresh E2E selection and isolate disk lock probes by @overtrue in https://github.com/rustfs/rustfs/pull/8638
- fix(lifecycle): reject expiry from stale policy snapshots by @cxymds in https://github.com/rustfs/rustfs/pull/8637
- docs(release): add post-release advisory reconciliation by @overtrue in https://github.com/rustfs/rustfs/pull/8639
- fix(filemeta): read large metacache records incrementally by @houseme in https://github.com/rustfs/rustfs/pull/8640
- fix(scanner): preserve checkpoint progress across object failures by @houseme in https://github.com/rustfs/rustfs/pull/8642
- fix(ecstore): reclaim rollback backups after object heal by @houseme in https://github.com/rustfs/rustfs/pull/8641
- fix(scanner): certify dirty usage per bucket and complete cycles with pending buckets by @reatang in https://github.com/rustfs/rustfs/pull/8542
- fix(scanner): attribute incomplete census and lease waits by @houseme in https://github.com/rustfs/rustfs/pull/8643
- perf(ecstore): keep inline heal rollback backups in staging by @houseme in https://github.com/rustfs/rustfs/pull/8648
- perf(filemeta): avoid clones and redundant map scans in into_fileinfo by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8647
- chore(release): align installation references for 1.0.3 by @overtrue in https://github.com/rustfs/rustfs/pull/8646
- fix(heal): verify checkpoint integrity before applying defaults by @houseme in https://github.com/rustfs/rustfs/pull/8649
- test(utils): cover mixed-case metadata alias conflicts by @overtrue in https://github.com/rustfs/rustfs/pull/8651
- test(table-catalog): validate current backing contracts by @marshawcoco in https://github.com/rustfs/rustfs/pull/8559
- feat(table-catalog): support conditional maintenance worker retries by @marshawcoco in https://github.com/rustfs/rustfs/pull/8562
- fix(ecstore): preserve inline heal rollback staging lifetime by @houseme in https://github.com/rustfs/rustfs/pull/8650
- fix(ecstore): clean completed PUT staging on pre-commit cancellation by @marshawcoco in https://github.com/rustfs/rustfs/pull/8654
- fix(scanner): pace checkpoints by snapshot construction cost by @marshawcoco in https://github.com/rustfs/rustfs/pull/8656
- fix(scanner): expose mixed sweep checkpoint transitions by @houseme in https://github.com/rustfs/rustfs/pull/8657
- fix(listing): accept literal prefixes with repeated slashes by @overtrue in https://github.com/rustfs/rustfs/pull/8605
- fix(scanner): scale backup deadline to checkpoint save cost by @marshawcoco in https://github.com/rustfs/rustfs/pull/8659
- feat(oidc): make the Console session duration configurable by @limitcool in https://github.com/rustfs/rustfs/pull/8568
- feat(policy): support s3:if-none-match and s3:if-match condition keys by @oc7o in https://github.com/rustfs/rustfs/pull/8615
- perf(filemeta): avoid clones and intermediate allocations in xl.meta codec by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8661
- fix(heal): place checkpoint serialization impls before tests by @overtrue in https://github.com/rustfs/rustfs/pull/8663
- feat(policy): support object creation operation conditions by @houseme in https://github.com/rustfs/rustfs/pull/8671
- docs: unify agent instructions across tools by @overtrue in https://github.com/rustfs/rustfs/pull/8675
- docs(architecture): record scanner usage authority and PUT-tail decisions by @overtrue in https://github.com/rustfs/rustfs/pull/8678
- ci: move compile-free and prebuilt-binary lanes to hosted runners by @overtrue in https://github.com/rustfs/rustfs/pull/8679
- fix(auth): restrict root-derived accounts and credential logs by @overtrue in https://github.com/rustfs/rustfs/pull/8674
- chore(docker): upgrade Alpine base image to 3.24.2 by @overtrue in https://github.com/rustfs/rustfs/pull/8680
- ci: reuse the dev cache in Connect boundary lanes and raise build jobs by @overtrue in https://github.com/rustfs/rustfs/pull/8682
- fix(helm): skip data PVCs when storageclass.dataStorageSize is empty by @overtrue in https://github.com/rustfs/rustfs/pull/8681
- ci: build development packages nightly instead of on every main push by @overtrue in https://github.com/rustfs/rustfs/pull/8684
- fix(helm): hold rolling updates until survivors re-admit a replaced pod by @overtrue in https://github.com/rustfs/rustfs/pull/8686
- fix(ci): align the ILM build-budget guard with CARGO_BUILD_JOBS 3 by @overtrue in https://github.com/rustfs/rustfs/pull/8687
- fix(ecstore): recover deletes beside stale data backups by @houseme in https://github.com/rustfs/rustfs/pull/8688
- fix(ci): restore the release-profile short-credential guard by @overtrue in https://github.com/rustfs/rustfs/pull/8691
- fix(ci): refresh the e2e-full selection for the new policy tests by @overtrue in https://github.com/rustfs/rustfs/pull/8693
- ci: run feature lanes nightly and warm caches on a schedule by @overtrue in https://github.com/rustfs/rustfs/pull/8683
- fix(admin): avoid error logs for idle rebalance status by @cxymds in https://github.com/rustfs/rustfs/pull/8694
- fix(ecstore): skip node-local prefix dirs in decommission listing by @overtrue in https://github.com/rustfs/rustfs/pull/8702
- fix(scanner): startup gates back off, rebuild and run degraded by @overtrue in https://github.com/rustfs/rustfs/pull/8695
- ci: return pull-request build jobs to 2 after an IO-bound timeout at 3 by @overtrue in https://github.com/rustfs/rustfs/pull/8698
- fix(heal): block replacement and root records per entry by @overtrue in https://github.com/rustfs/rustfs/pull/8700
- fix(scanner): anchor the bitrot cadence and budget per-disk I/O by @overtrue in https://github.com/rustfs/rustfs/pull/8701
- fix(storage): preserve scanner checkpoints and bound MRF journal I/O by @houseme in https://github.com/rustfs/rustfs/pull/8692
- test(connect): hash test provenance before listener peer-cred probe by @overtrue in https://github.com/rustfs/rustfs/pull/8703
- fix(scanner): stop treating an ordinary PUT as data movement in cycle termination by @overtrue in https://github.com/rustfs/rustfs/pull/8696
- fix(quota): keep ledger-admitted writes independent of scanner usage by @overtrue in https://github.com/rustfs/rustfs/pull/8699
- ci: gate pull requests on Clippy and warm its check artifacts by @overtrue in https://github.com/rustfs/rustfs/pull/8708
- ci: move API-only and summary jobs to hosted runners by @overtrue in https://github.com/rustfs/rustfs/pull/8707
- fix(readiness): hold startup readiness until peers re-admit the node by @overtrue in https://github.com/rustfs/rustfs/pull/8704
- fix(heal): decide object absence from storage evidence, not source by @overtrue in https://github.com/rustfs/rustfs/pull/8697
- fix(ecstore): address the null version exactly during data movement by @overtrue in https://github.com/rustfs/rustfs/pull/8711
- fix(decommission): adopt target intents left by a killed leader by @overtrue in https://github.com/rustfs/rustfs/pull/8710
- test(obs): pin daily rotation boundary test to fixed timestamps by @overtrue in https://github.com/rustfs/rustfs/pull/8716
- fix(quota): stop pinning quota e2e readiness to the scanner leader by @overtrue in https://github.com/rustfs/rustfs/pull/8719
- fix(decommission): scope temporary-copy budget checks to the growth pool by @overtrue in https://github.com/rustfs/rustfs/pull/8721
- fix(decommission): keep status reads and starts off the movement gate by @overtrue in https://github.com/rustfs/rustfs/pull/8715
- test(quota): cover early-reload routing and snapshot age boundaries by @overtrue in https://github.com/rustfs/rustfs/pull/8722
- perf(ecstore,filemeta): avoid inline-data reads and redundant decodes in list_objects by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8706
- fix(decommission): retry every stale target selection without failing by @overtrue in https://github.com/rustfs/rustfs/pull/8724
- fix(decommission): run the leader-side start to completion by @overtrue in https://github.com/rustfs/rustfs/pull/8723
- fix(obs): skip address discovery for initialized node identity by @houseme in https://github.com/rustfs/rustfs/pull/8730
- fix(ecstore): leave no source free version for a moved tier version by @overtrue in https://github.com/rustfs/rustfs/pull/8732
- fix(table-catalog): authorize warehouse location claims by @GatewayJ in https://github.com/rustfs/rustfs/pull/8736
- fix(quota): refresh peer metadata after admin quota changes by @cxymds in https://github.com/rustfs/rustfs/pull/8735
- fix(decommission): allow retry after unresolved failure by @cxymds in https://github.com/rustfs/rustfs/pull/8737
- fix(metrics): preserve S3 operation across detached tasks by @houseme in https://github.com/rustfs/rustfs/pull/8738
- fix(s3): validate bucket location constraints by @houseme in https://github.com/rustfs/rustfs/pull/8739
- fix(table-catalog): support manifest-only rewrites by @GatewayJ in https://github.com/rustfs/rustfs/pull/8731
- fix(tier): restore private endpoints and forced config removal by @cxymds in https://github.com/rustfs/rustfs/pull/8725
- fix(metrics): expose allocator observation availability by @houseme in https://github.com/rustfs/rustfs/pull/8748
- fix(rebalance): move tier free versions with their entry by @overtrue in https://github.com/rustfs/rustfs/pull/8753
- fix(ecstore): allow repeated marker deletes at write quorum by @cxymds in https://github.com/rustfs/rustfs/pull/8750
- fix(runtime): isolate configured region per store instance by @houseme in https://github.com/rustfs/rustfs/pull/8743
- fix(ecstore): reindex pool metadata ids after removal by @cxymds in https://github.com/rustfs/rustfs/pull/8733
- test(filemeta,ecstore): cover listing metadata and msgpack decode paths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8755
- fix(iam): derive bucket location conditions from XML by @houseme in https://github.com/rustfs/rustfs/pull/8744
- fix(replication): replicate null versions written before versioning by @reatang in https://github.com/rustfs/rustfs/pull/8757
- fix(ecstore): ignore child-key prefixes in delete settlement fingerprint by @overtrue in https://github.com/rustfs/rustfs/pull/8751
- fix(replication): read source delete markers on multi-pool stores by @reatang in https://github.com/rustfs/rustfs/pull/8756
- fix(scanner): admit dirty scope across the bucket-listing window and pace full-walk fallbacks by @reatang in https://github.com/rustfs/rustfs/pull/8690
- fix(decommission): let a failed start roll back its own activation by @overtrue in https://github.com/rustfs/rustfs/pull/8752
- test(heal): retain unknown same-key repair across replay by @houseme in https://github.com/rustfs/rustfs/pull/8759
- fix(s3): avoid mutation locks for existing buckets by @shurkus in https://github.com/rustfs/rustfs/pull/8745
- chore(deps): refresh dependencies and patch certificate trust by @houseme in https://github.com/rustfs/rustfs/pull/8761
- fix(ecstore): handle Windows trash cleanup deletion races by @reatang in https://github.com/rustfs/rustfs/pull/8754
- fix(decommission): defer source cleanup quorum failures by @overtrue in https://github.com/rustfs/rustfs/pull/8760
- feat(metrics): observe remote directory walk lifecycles by @houseme in https://github.com/rustfs/rustfs/pull/8765
- ci(pool): finalize decommission removal and verify surviving pools by @majinghe in https://github.com/rustfs/rustfs/pull/8749
- test(e2e): add scanner/heal topology protection matrix by @overtrue in https://github.com/rustfs/rustfs/pull/8705
- perf(filemeta,ecstore): avoid intermediate clones in FileInfo decode by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8767
- fix(ecstore): honor idle drive monitoring opt-out by @overtrue in https://github.com/rustfs/rustfs/pull/8770
- fix(heal): hold unobserved legacy MRF responsibilities by @overtrue in https://github.com/rustfs/rustfs/pull/8772
- fix(ecstore): retain operation in detached mutations by @houseme in https://github.com/rustfs/rustfs/pull/8776
- feat(metrics): track usage outcomes and trim decommission probes by @houseme in https://github.com/rustfs/rustfs/pull/8781
- fix(s3): return InvalidPart and streamline multipart completion by @houseme in https://github.com/rustfs/rustfs/pull/8780
- fix(ecstore): preserve diagnostic context in config tasks by @houseme in https://github.com/rustfs/rustfs/pull/8779
- fix(heal): type legacy MRF decisions and defer diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/8778
- fix(decommission): move the free version of an expired tier version by @overtrue in https://github.com/rustfs/rustfs/pull/8777
- feat(metrics): observe local walk lifecycle and output bytes by @houseme in https://github.com/rustfs/rustfs/pull/8775
- perf(heal): aggregate MRF lifecycle metrics in one pass by @houseme in https://github.com/rustfs/rustfs/pull/8773
- fix(replication): keep replicated multipart null versions as null by @reatang in https://github.com/rustfs/rustfs/pull/8763
- docs(agents): add three-verdict finding contract to security skill by @overtrue in https://github.com/rustfs/rustfs/pull/8795
- fix(decommission): finish multipart null versions superseded on target by @overtrue in https://github.com/rustfs/rustfs/pull/8774
- perf(scanner): move owned usage snapshot keys by @houseme in https://github.com/rustfs/rustfs/pull/8792
- perf(s3): remove unused multi-delete result clones by @houseme in https://github.com/rustfs/rustfs/pull/8789
- feat(metrics): count scanner wakeups and cycle attempts by @houseme in https://github.com/rustfs/rustfs/pull/8786
- fix(diagnostics): preserve context across task handoffs by @houseme in https://github.com/rustfs/rustfs/pull/8785
- perf(filemeta,ecstore): index metadata batches and trim decodes by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8784
- feat(metrics): expose allocator reclaim statistic totals by @houseme in https://github.com/rustfs/rustfs/pull/8782
- perf(heal): reuse the verified repair proof queue by @houseme in https://github.com/rustfs/rustfs/pull/8790
- feat(metrics): observe HTTP entry-to-dispatch latency by @houseme in https://github.com/rustfs/rustfs/pull/8788
- test(obs): cover contended identity under netlink denial by @houseme in https://github.com/rustfs/rustfs/pull/8797
- fix(ecstore): identify scanner retirement planner failure phases by @houseme in https://github.com/rustfs/rustfs/pull/8796
- chore(deps): refresh cloud SDKs, runtime and profiling by @houseme in https://github.com/rustfs/rustfs/pull/8787
- perf(ecstore,filemeta): batch listings and buffer metacache streams by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8791
- perf(heal): skip replay anchor clones for empty repair queues by @houseme in https://github.com/rustfs/rustfs/pull/8798
- fix(ecstore): skip empty tier recovery scans by @cxymds in https://github.com/rustfs/rustfs/pull/8804
- fix(ecstore): restore marker write quorum on decommission resume by @houseme in https://github.com/rustfs/rustfs/pull/8793
- perf(heal): borrow intents during retirement proof checks by @houseme in https://github.com/rustfs/rustfs/pull/8800
- chore(deps): upgrade workspace parking_lot to 0.13 by @houseme in https://github.com/rustfs/rustfs/pull/8801
- perf(utils,filemeta): vectorize path and metadata key hot loops with SWAR by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8806
- fix(ecstore): preserve scanner authority during decommission by @houseme in https://github.com/rustfs/rustfs/pull/8807
- test(scanner): reserve capacity for all native backlog fixtures by @houseme in https://github.com/rustfs/rustfs/pull/8802
- fix(config): preserve persisted compatibility fields by @cxymds in https://github.com/rustfs/rustfs/pull/8803
- feat(metrics): classify terminal remote walk failures by @houseme in https://github.com/rustfs/rustfs/pull/8809
- perf(filemeta): avoid per-replica cloning during metacache quorum resolution by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8810
- fix(scanner): fence backlog writes against stale pool membership by @houseme in https://github.com/rustfs/rustfs/pull/8799
- perf(filemeta): fast-path canonical V3 header matching and borrowed version merges by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8811
- test(e2e): accept retried rebalance deferrals; retry busy decom preflight by @overtrue in https://github.com/rustfs/rustfs/pull/8813
- fix(admin): serve bare madmin info bodies on the MinIO prefix by @reatang in https://github.com/rustfs/rustfs/pull/8815
- fix(replication): reject connection edits on site-replication targets by @reatang in https://github.com/rustfs/rustfs/pull/8814
- fix(site-replication): keep stored name on endpoint-only edits by @reatang in https://github.com/rustfs/rustfs/pull/8817
- fix(s3): preserve typed upload errors across body readers by @houseme in https://github.com/rustfs/rustfs/pull/8816
- chore(deps): refresh ICU and profiling dependencies by @houseme in https://github.com/rustfs/rustfs/pull/8820
- fix(ecstore): preserve migrated reads and retry busy pool heals by @overtrue in https://github.com/rustfs/rustfs/pull/8821
- fix(heal): list local blocks and quiet legacy ambiguity logs by @overtrue in https://github.com/rustfs/rustfs/pull/8826
- fix(decommission): keep partially moved versions readable by @overtrue in https://github.com/rustfs/rustfs/pull/8824
- fix(ecstore): unify multipart generation fence lifetimes by @houseme in https://github.com/rustfs/rustfs/pull/8830
- fix(scanner): streamline budgeted metadata walks by @houseme in https://github.com/rustfs/rustfs/pull/8837
- feat(heal): inspect blocked checkpoint validation without mutation by @overtrue in https://github.com/rustfs/rustfs/pull/8838
- fix(test): select the current G09 upgrade case by @overtrue in https://github.com/rustfs/rustfs/pull/8841
- perf(ecstore): bound xl.meta read workers and enable HEAD early-stop by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8846
- fix(heal): preserve typed replacement readiness deferrals by @overtrue in https://github.com/rustfs/rustfs/pull/8823
- fix(scanner): preserve remote checkpoint coverage identity by @overtrue in https://github.com/rustfs/rustfs/pull/8827
- fix(scanner): recover dual corruption with retained epoch fencing by @overtrue in https://github.com/rustfs/rustfs/pull/8833
- fix(quota): retire degraded floors from durable usage reports by @overtrue in https://github.com/rustfs/rustfs/pull/8832
- perf(scanner): transfer owned caches without redundant clones by @overtrue in https://github.com/rustfs/rustfs/pull/8849
- chore(deps): refresh crates and upgrade hotpath to 0.29.0 by @houseme in https://github.com/rustfs/rustfs/pull/8852
- feat(scanner): configure startup recovery backoff cap by @overtrue in https://github.com/rustfs/rustfs/pull/8845
- fix(notify): preserve marker IDs and reduce event allocations by @houseme in https://github.com/rustfs/rustfs/pull/8853
- feat(scanner): observe canonical heal task terminals by @overtrue in https://github.com/rustfs/rustfs/pull/8851
- fix(scanner): recover backlog across interrupted pool expansions by @overtrue in https://github.com/rustfs/rustfs/pull/8858
- fix(decommission): count settled entries once, back off repeat pauses by @overtrue in https://github.com/rustfs/rustfs/pull/8848
- test(heal): cover rc.5 upgrades and refresh ctutils by @overtrue in https://github.com/rustfs/rustfs/pull/8847
- test(e2e): bound parallel seeding for scanner usage checks by @overtrue in https://github.com/rustfs/rustfs/pull/8861
- fix(scanner): collect benchmark metrics from realtime route by @overtrue in https://github.com/rustfs/rustfs/pull/8859
- fix(ecstore): skip orphan cleanup for leading-slash listings by @overtrue in https://github.com/rustfs/rustfs/pull/8864
- feat(scanner): count cache save payload bytes per attempt by @overtrue in https://github.com/rustfs/rustfs/pull/8865
- feat(heal): record namespace lock acquisition waits by @overtrue in https://github.com/rustfs/rustfs/pull/8866
- fix(scanner): recover an interleaved pause backlog wedge after expansion by @overtrue in https://github.com/rustfs/rustfs/pull/8867
- test(scanner): add recoverable benchmark service control by @overtrue in https://github.com/rustfs/rustfs/pull/8868
- fix(heal): measure admission lock wait and hold separately by @overtrue in https://github.com/rustfs/rustfs/pull/8863
- feat(scanner): extract OTLP histogram and counter windows by @overtrue in https://github.com/rustfs/rustfs/pull/8862
- fix(storage): apply and index explicit delete-marker removals by @houseme in https://github.com/rustfs/rustfs/pull/8854
- fix(scanner): classify erasure candidates in one budgeted walk by @houseme in https://github.com/rustfs/rustfs/pull/8869
- fix(s3): apply bucket CORS to virtual-hosted-style requests by @cozima in https://github.com/rustfs/rustfs/pull/8860
- feat(scanner): count object metadata visits by @overtrue in https://github.com/rustfs/rustfs/pull/8874
- perf(ecstore): coalesce inline PUT commit and bound disk namespace workers by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8871
- test(scanner): verify retained versions with an independent oracle by @overtrue in https://github.com/rustfs/rustfs/pull/8870
- fix(scanner): preserve unknown catch-up state on ledger failure by @overtrue in https://github.com/rustfs/rustfs/pull/8877
- test(scanner): attest running benchmark process identity by @overtrue in https://github.com/rustfs/rustfs/pull/8876
- fix: isolate internode reads and migrate crypto dependencies by @houseme in https://github.com/rustfs/rustfs/pull/8872
- test(ilm): isolate fixture recovery loop ownership by @overtrue in https://github.com/rustfs/rustfs/pull/8881
- perf(ecstore): avoid heap allocation for shard descriptors by @houseme in https://github.com/rustfs/rustfs/pull/8873
- fix(s3): preserve aws-chunked error responses by @houseme in https://github.com/rustfs/rustfs/pull/8875
- feat(scanner): expose publication and heal observation status by @overtrue in https://github.com/rustfs/rustfs/pull/8878
- feat(observability): sample live cgroup resource limits by @overtrue in https://github.com/rustfs/rustfs/pull/8882
- fix(quota): persist lazily created populated shards by @cxymds in https://github.com/rustfs/rustfs/pull/8883
- perf(ecstore): avoid head-of-line blocking in delete recovery by @houseme in https://github.com/rustfs/rustfs/pull/8884
- feat(concurrency): retain resource leases through native I/O by @overtrue in https://github.com/rustfs/rustfs/pull/8886
- feat(observability): track foreground response-body completion windows by @overtrue in https://github.com/rustfs/rustfs/pull/8894
- fix(lock): reach quorum behind silent voters by @houseme in https://github.com/rustfs/rustfs/pull/8895
- fix(ecstore): invalidate FdCache on in-place writes, rename_part, and directory rename_file by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8889
- fix(server): preserve UTF-8 boundaries in Content-Disposition filename parsing by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8880
- perf(rpc): remove stream boxing and verify distributed TLS reads by @houseme in https://github.com/rustfs/rustfs/pull/8885
- fix(ecstore): avoid usize underflow when root_disk drives are offline or unknown by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8879
- fix(s3): preserve legacy plaintext multipart ETags in listings by @houseme in https://github.com/rustfs/rustfs/pull/8900
- feat(heal): add live node admission feedback by @overtrue in https://github.com/rustfs/rustfs/pull/8897
- fix(scanner): make startup responsive and skip redundant config work by @houseme in https://github.com/rustfs/rustfs/pull/8898
- fix(ecstore): unblock delete replay and parallelize preparation by @houseme in https://github.com/rustfs/rustfs/pull/8896
- fix(multipart): recover aborts without retaining topology locks by @houseme in https://github.com/rustfs/rustfs/pull/8904
- fix(listing): keep the limit flag monotonic and fix metacache helpers by @overtrue in https://github.com/rustfs/rustfs/pull/8906
- fix(rio): ZigZag-encode signed delta varints and widen scratch buffer in compress_index by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8893
- fix(heal): retain MRF state when bucket identity is unresolved by @overtrue in https://github.com/rustfs/rustfs/pull/8905
- perf(ecstore): reduce scanner metadata path allocation overhead by @houseme in https://github.com/rustfs/rustfs/pull/8899
- chore(deps): refresh allocator, profiling, and archive crates by @houseme in https://github.com/rustfs/rustfs/pull/8910
- fix(listing): honor per-object quorum with borrowed metadata by @houseme in https://github.com/rustfs/rustfs/pull/8901
- test(e2e): harden multipart fault and TLS acceptance by @houseme in https://github.com/rustfs/rustfs/pull/8907
- fix(listing): make page exhaustion explicit, carry limit stops in-band by @overtrue in https://github.com/rustfs/rustfs/pull/8908
- fix(rebalance): move a version a delete-all expiry would apply inline by @overtrue in https://github.com/rustfs/rustfs/pull/8917
- fix(ecstore): preserve inactive multipart abort authority by @houseme in https://github.com/rustfs/rustfs/pull/8920
- perf(ecstore): isolate durable I/O and streamline disk dispatch by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8902
- fix(concurrency): prevent premature Workers::wait drain completion on slot handoff by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8892
- feat(heal): read retained MRF lifecycle v2 checkpoints by @overtrue in https://github.com/rustfs/rustfs/pull/8913
- fix(admin): decouple target inventory from runtime convergence by @houseme in https://github.com/rustfs/rustfs/pull/8921
- chore(deps): update flake.lock by @houseme in https://github.com/rustfs/rustfs/pull/8922
- fix(quota): keep reads available without snapshot-wide copies by @houseme in https://github.com/rustfs/rustfs/pull/8928
- test(ecstore): pin historical compression index reads by @houseme in https://github.com/rustfs/rustfs/pull/8925
- test(rio): cover maximum index varint totals by @overtrue in https://github.com/rustfs/rustfs/pull/8915
- fix(test): follow scanner schedules during multi-pool recovery by @overtrue in https://github.com/rustfs/rustfs/pull/8929
- fix(s3): normalize UploadPartCopy source versionId and populate source versioning state by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8890
- feat(scanner): expose startup phases and attempt deadlines by @houseme in https://github.com/rustfs/rustfs/pull/8931
- feat(heal): advertise MRF lifecycle reader capability by @overtrue in https://github.com/rustfs/rustfs/pull/8916
- perf(ecstore): coalesce delete inspection, settlement, and durability by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8932
- fix(heal): gate unresolved MRF lifecycle writes on reader support by @overtrue in https://github.com/rustfs/rustfs/pull/8918
- test(scanner): verify checkpoint debt across process restarts by @overtrue in https://github.com/rustfs/rustfs/pull/8938
- test(ecstore): verify encoding inputs against released shards by @houseme in https://github.com/rustfs/rustfs/pull/8933
- fix(storage): guard MPU recovery and startup RPC admission by @houseme in https://github.com/rustfs/rustfs/pull/8934
- chore(release): align installation references for 1.0.4 by @overtrue in https://github.com/rustfs/rustfs/pull/8940
- docs(release): reconcile main and clean completed release branches by @overtrue in https://github.com/rustfs/rustfs/pull/8945
- fix(scanner): retry unreadable cycle state in remote walk fence poll by @loopingz in https://github.com/rustfs/rustfs/pull/8939
- test(admin): cover target inventory HTTP acceptance by @houseme in https://github.com/rustfs/rustfs/pull/8942
- test(heal): verify backup recovery and tier owner handoff by @overtrue in https://github.com/rustfs/rustfs/pull/8935
- refactor(listing): keep paginated listing on ECStore only by @overtrue in https://github.com/rustfs/rustfs/pull/8936
- test(e2e): cover simultaneous multipart terminal contenders by @houseme in https://github.com/rustfs/rustfs/pull/8943
- test(e2e): validate conservative Abort recovery boundaries by @houseme in https://github.com/rustfs/rustfs/pull/8941
- refactor(listing): remove env-gated ListObjects index provider by @overtrue in https://github.com/rustfs/rustfs/pull/8948
- test(s3-client): make range preflight checks deterministic by @overtrue in https://github.com/rustfs/rustfs/pull/8952
- fix(storage): fence multipart and metadata recovery by @houseme in https://github.com/rustfs/rustfs/pull/8919
- fix(scanner): avoid per-set max_entries truncation before cross-set prefix usage merge by @jim-czcbangkai in https://github.com/rustfs/rustfs/pull/8891
- test(e2e): avoid rescanning publication lock logs by @houseme in https://github.com/rustfs/rustfs/pull/8959
- chore(deps): update crypto-bigint to 0.7.10 by @houseme in https://github.com/rustfs/rustfs/pull/8962
- test: stabilize diagnostics and storage CI fixtures by @houseme in https://github.com/rustfs/rustfs/pull/8944
- refactor(listing): make cursors plain keys and opaque V2 tokens by @overtrue in https://github.com/rustfs/rustfs/pull/8950
- fix(listing): omit sub-quorum versions from ListObjectVersions by @overtrue in https://github.com/rustfs/rustfs/pull/8964
- perf(ecstore): optimize cold HEAD and GET metadata read paths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8960
- fix(storage): 404 for dangling objects and strict list quorum default by @overtrue in https://github.com/rustfs/rustfs/pull/8963
- refactor(listing): list latest versions with MinIO's listing quorum by @overtrue in https://github.com/rustfs/rustfs/pull/8965
- fix(ecstore): recover drives without serial reconnect delays by @houseme in https://github.com/rustfs/rustfs/pull/8972
- fix(deps): upgrade russh and replace vulnerable zstd codecs by @houseme in https://github.com/rustfs/rustfs/pull/8969
- perf(ecstore): coalesce write and multipart metadata I/O paths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8975
- fix(policy): substitute jwt and ldap variables in policies by @RaphaelFakhri in https://github.com/rustfs/rustfs/pull/8927
- fix(listing): keep the V1 NextMarker escape and document optimal limits by @overtrue in https://github.com/rustfs/rustfs/pull/8976
- fix(scanner): reduce memory retention and redundant scan work by @houseme in https://github.com/rustfs/rustfs/pull/8971
- fix(observability): correlate physical namespace lock releases by @houseme in https://github.com/rustfs/rustfs/pull/8974
- ci: remove never-green Performance A/B workflow by @majinghe in https://github.com/rustfs/rustfs/pull/8979
- fix(heal): group newly attached replacement disks by @overtrue in https://github.com/rustfs/rustfs/pull/8973
- docs(agents): add ecstore syscall and blocking-dispatch perf guardrails by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8987
- test(e2e): cover partial EC:4 node recovery by @houseme in https://github.com/rustfs/rustfs/pull/8983
- feat(tools): add read-only BTF prototype inspection by @houseme in https://github.com/rustfs/rustfs/pull/8985
- docs: define the dirty-journal metadata source contract by @houseme in https://github.com/rustfs/rustfs/pull/8984
- test(e2e): validate late multipart part transaction packets by @houseme in https://github.com/rustfs/rustfs/pull/8989
- test(scanner): add memory acceptance runner and budget probes by @houseme in https://github.com/rustfs/rustfs/pull/8988
- perf(ecstore): reduce multipart source fencing directory and read I/O by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/8986
- ci: build linux-aarch64 releases on Ubicloud ARM by @majinghe in https://github.com/rustfs/rustfs/pull/8996
- fix(listing): leave delete recovery out of list requests by @overtrue in https://github.com/rustfs/rustfs/pull/8980
- docs(scanner): clarify incomplete census diagnostics by @overtrue in https://github.com/rustfs/rustfs/pull/9002
- test(ecstore): stabilize metadata fanout lifecycle checks by @overtrue in https://github.com/rustfs/rustfs/pull/8999
- fix(ecstore): select the latest version at read quorum like MinIO by @overtrue in https://github.com/rustfs/rustfs/pull/8982
- fix(heal): pace and parallelize replacement recovery by @overtrue in https://github.com/rustfs/rustfs/pull/9005
- feat(tools): inspect BTF scalar member layouts by @houseme in https://github.com/rustfs/rustfs/pull/9003
- fix(table-catalog): reload peers after table bucket toggle by @marshawcoco in https://github.com/rustfs/rustfs/pull/8994
- fix(decommission): defer copies that time out on a namespace lock by @overtrue in https://github.com/rustfs/rustfs/pull/9006
- fix(listing): treat key markers as literal keys by @overtrue in https://github.com/rustfs/rustfs/pull/8978
- test(connect): report drive probe timeout phases by @overtrue in https://github.com/rustfs/rustfs/pull/8977
- perf(ecstore): coalesce rename_part and multipart completion I/O by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9001
- docs(listing): describe degraded strict quorum limits by @overtrue in https://github.com/rustfs/rustfs/pull/8981
- fix(admin): make pool diagnostics partial-outage safe by @cxymds in https://github.com/rustfs/rustfs/pull/8995
- fix(scanner): add context to set cache failures by @overtrue in https://github.com/rustfs/rustfs/pull/9010
- fix(sftp): allow bucket-scoped root listings by @pentacore in https://github.com/rustfs/rustfs/pull/8998
- fix(scanner): summarize bucket root collection by @overtrue in https://github.com/rustfs/rustfs/pull/9013
- fix(lock): retain state during acquisition by @overtrue in https://github.com/rustfs/rustfs/pull/9014
- test(decommission): cover held target lock and partial-copy resume by @overtrue in https://github.com/rustfs/rustfs/pull/9016
- fix(ecstore): serve the latest readable version past dangling versions by @overtrue in https://github.com/rustfs/rustfs/pull/9004
- chore: remove redundant review skills by @overtrue in https://github.com/rustfs/rustfs/pull/9022
- fix(rebalance): reuse the target pool holding a dangling copy by @overtrue in https://github.com/rustfs/rustfs/pull/9018
- feat(observability): attribute local batch shard reads by @houseme in https://github.com/rustfs/rustfs/pull/8991
- chore(deps): refresh fuzz workspace dependencies by @houseme in https://github.com/rustfs/rustfs/pull/9024
- fix(ecstore): resolve dangling latest versions in metadata updates by @overtrue in https://github.com/rustfs/rustfs/pull/9009
- fix(ecstore): harden stale multipart cleanup by @houseme in https://github.com/rustfs/rustfs/pull/9023
- feat(scanner): share node admission with background heal by @overtrue in https://github.com/rustfs/rustfs/pull/8903
- ci: move lightweight jobs to GitHub-hosted Ubuntu by @majinghe in https://github.com/rustfs/rustfs/pull/9027
- refactor(storage): reuse dirty journal replay JSON frames by @houseme in https://github.com/rustfs/rustfs/pull/9026
- feat(plugins): add minimal original-user runner integration by @overtrue in https://github.com/rustfs/rustfs/pull/9017
- test(storage): pin dirty journal JSON recursion boundary by @houseme in https://github.com/rustfs/rustfs/pull/9029
- refactor(storage): replay decoded dirty journal records by @houseme in https://github.com/rustfs/rustfs/pull/9030
- fix(heal): coordinate delete recovery and preserve transient errors by @overtrue in https://github.com/rustfs/rustfs/pull/9031
- test(targets): bound failing-delete replay observations by @houseme in https://github.com/rustfs/rustfs/pull/9032
- perf(ecstore): reuse bucket incarnation fences across copy and metadata paths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9034
- feat(s3): serve Veeam SOSAPI system and capacity XML by @loverustfs in https://github.com/rustfs/rustfs/pull/9007
- fix(metrics): reject missing histogram counts by @overtrue in https://github.com/rustfs/rustfs/pull/9039
- fix(ecstore): prove multipart part sizes before cleanup by @houseme in https://github.com/rustfs/rustfs/pull/9037
- test(heal): keep rename-tail repair out of isolated root heal by @overtrue in https://github.com/rustfs/rustfs/pull/9041
- fix: keep incomplete scanner measurements unknown by @overtrue in https://github.com/rustfs/rustfs/pull/9044
- perf(ecstore): streamline local GET batch reads by @houseme in https://github.com/rustfs/rustfs/pull/9043
- fix(admin): protect notification target edits by @houseme in https://github.com/rustfs/rustfs/pull/9048
- fix: account for shared CPU pressure in background admission by @overtrue in https://github.com/rustfs/rustfs/pull/9050
- perf(heal): stream MRF intent digests by @overtrue in https://github.com/rustfs/rustfs/pull/9051
- fix(ecstore): remove misleading remote lock log by @houseme in https://github.com/rustfs/rustfs/pull/9042
- test(validation): run canonical cases and build pinned Heal tools by @cxymds in https://github.com/rustfs/rustfs/pull/8455
- fix(tiering): diagnose blocked tier deletion and retry cleanup by @cxymds in https://github.com/rustfs/rustfs/pull/9035
- feat(ecstore): add sampled batch CPU diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/9019
- perf(lifecycle): skip size reads for disabled rules by @houseme in https://github.com/rustfs/rustfs/pull/9046
- fix(storage): reject unwritable data volumes during startup by @majinghe in https://github.com/rustfs/rustfs/pull/9056
- chore(deps): refresh crates and adopt released aws-sigv4 by @houseme in https://github.com/rustfs/rustfs/pull/9047
- chore: strengthen agent delivery standards and validation by @overtrue in https://github.com/rustfs/rustfs/pull/9058
- ci: unify validation planning, artifacts and suite orchestration by @overtrue in https://github.com/rustfs/rustfs/pull/9059
- ci: qualify workspace packages that share a name with a dependency by @overtrue in https://github.com/rustfs/rustfs/pull/9065
- ci: let failed-job reruns reuse the producer's test archives by @overtrue in https://github.com/rustfs/rustfs/pull/9071
- ci: enforce affected validation and rehearse bounded shards by @overtrue in https://github.com/rustfs/rustfs/pull/9070
- fix(audit): emit entries for multipart parts and bucket config writes by @aepod in https://github.com/rustfs/rustfs/pull/9067
- ci(ft,heal,chain): FT gate 54, heal budget, and a temporary performance lane disable by @majinghe in https://github.com/rustfs/rustfs/pull/9057
- fix: preserve PUT lock failure diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/9062
- fix(site-replication): grant replicator s3:ForceDeleteObject by @timootten in https://github.com/rustfs/rustfs/pull/9069
- fix(replication): count force-delete outcomes in replication stats by @reatang in https://github.com/rustfs/rustfs/pull/9072
- fix(audit): emit a bounded audit entry for authorization denials by @aepod in https://github.com/rustfs/rustfs/pull/9073
- fix(s3select): case-insensitive enums, LINES key order, path names by @babs in https://github.com/rustfs/rustfs/pull/9021
- perf(ecstore): fuse local PUT/DELETE commit I/O and eliminate redundant metadata disk reads (#9038) by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9064
- fix(ci): accept binary target IDs in workspace shards by @overtrue in https://github.com/rustfs/rustfs/pull/9075
- docs: require removing task build output before handoff by @overtrue in https://github.com/rustfs/rustfs/pull/9078
- fix(scanner): distinguish missing heal identity fields by @overtrue in https://github.com/rustfs/rustfs/pull/9000
- fix(scanner): align unversioned overflow heal options by @overtrue in https://github.com/rustfs/rustfs/pull/9036
- fix(scanner): report incomplete collector observations by @overtrue in https://github.com/rustfs/rustfs/pull/9012
- fix(heal): preserve data when removal is disabled by @overtrue in https://github.com/rustfs/rustfs/pull/9040
- fix: reject unverified scanner performance evidence by @overtrue in https://github.com/rustfs/rustfs/pull/9049
- feat: classify scanner metadata calls by diagnostic prefix by @overtrue in https://github.com/rustfs/rustfs/pull/9052
- fix(heal): prevent lock timeouts during disk recovery by @overtrue in https://github.com/rustfs/rustfs/pull/9054
- perf(scanner): batch proportional pacing in folder walkers by @overtrue in https://github.com/rustfs/rustfs/pull/8850
- fix(scanner): track heal generation and payload observations by @overtrue in https://github.com/rustfs/rustfs/pull/9008
- feat(scanner): certify cold peer buckets during hot writes by @overtrue in https://github.com/rustfs/rustfs/pull/8970
- feat(storage): share physical admission across scanner and heal by @overtrue in https://github.com/rustfs/rustfs/pull/8911
- feat(scanner): fair bucket service across restarts and budgeted first enumeration by @overtrue in https://github.com/rustfs/rustfs/pull/9083
- fix(console): buffer brotli responses to set Content-Length for Firefox (#9076) by @SavvySloth in https://github.com/rustfs/rustfs/pull/9079
- fix(console): strip Content-Encoding on brotli buffer failure by @overtrue in https://github.com/rustfs/rustfs/pull/9085
- test(heal): align cleanup tests with removal-disabled heals by @overtrue in https://github.com/rustfs/rustfs/pull/9087
- chore(deps): refresh workspace dependencies by @houseme in https://github.com/rustfs/rustfs/pull/9080
- docs(testing): index event-class drills and retained CI evidence by @overtrue in https://github.com/rustfs/rustfs/pull/9088
- ci: record CI01 measurements, drill evidence and fix the OIDC live gate by @overtrue in https://github.com/rustfs/rustfs/pull/9091
- ci: move specialized lanes off the pull-request path by @overtrue in https://github.com/rustfs/rustfs/pull/9093
- chore(e2e): isolated harness event drill (close after evidence) by @overtrue in https://github.com/rustfs/rustfs/pull/9089
- feat(release): gate publication on candidate certification (R01) by @overtrue in https://github.com/rustfs/rustfs/pull/9090
- ci: stamp the plan contract and rename the workspace lint-and-build key by @overtrue in https://github.com/rustfs/rustfs/pull/9095
- fix(s3): guard conditional multipart pool errors by @houseme in https://github.com/rustfs/rustfs/pull/9092
- fix(ecstore): clear stale BucketMetadataSys on ECStore drop by @overtrue in https://github.com/rustfs/rustfs/pull/9097
- fix(scanner): rebuild unreadable usage floor instead of stopping leader iteration by @overtrue in https://github.com/rustfs/rustfs/pull/9101
- perf(ecstore): optimize listing, versioned put, delete, and multipart (#9077) by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9094
- test(console): strengthen brotli buffer middleware test coverage by @SavvySloth in https://github.com/rustfs/rustfs/pull/9098
- test(e2e): stabilize mixed-version coordinator assertion against leader-lock refresh gaps by @overtrue in https://github.com/rustfs/rustfs/pull/9103
- perf(ecstore): optimize multipart commit, delete receipts, and fsync by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9105
- fix(s3-tables): clean empty catalogs and cache registration reads by @GatewayJ in https://github.com/rustfs/rustfs/pull/9063
- chore(deps): update flake.lock by @houseme in https://github.com/rustfs/rustfs/pull/9108
- perf(s3): streamline conditional multipart preflight by @houseme in https://github.com/rustfs/rustfs/pull/9099
- ci(validation): sweep the migrated canonical validation cases nightly by @majinghe in https://github.com/rustfs/rustfs/pull/9107
- perf(ecstore,rio,utils): accelerate MD5 ETag hashing and SWAR disk path checks by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9110
- fix(test): use available Docker privileges in OIDC live gate by @overtrue in https://github.com/rustfs/rustfs/pull/9109
- docs(scanner): define prefix statistics contract by @houseme in https://github.com/rustfs/rustfs/pull/9116
- test(filemeta): cover visible version after tier cleanup by @houseme in https://github.com/rustfs/rustfs/pull/9115
- feat(tls): add opt-in fips feature for aws-lc-rs and rustls by @boylee1111 in https://github.com/rustfs/rustfs/pull/9084
- chore(deps): update crates and fix storage CI regressions by @houseme in https://github.com/rustfs/rustfs/pull/9111
- ci(validation): resolve the newest nightly build on scheduled sweeps by @majinghe in https://github.com/rustfs/rustfs/pull/9114
- fix(ecstore): release retained file descriptor cache invalidations by @GatewayJ in https://github.com/rustfs/rustfs/pull/9112
- perf(ecstore): shard disk path lock registries with SWAR byte keys by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9127
- chore(deps): bump the dependencies group across 1 directory with 5 updates by @dependabot[bot] in https://github.com/rustfs/rustfs/pull/9113
- test(e2e): honor namespace backpressure in mixed workload by @houseme in https://github.com/rustfs/rustfs/pull/9122
- ci: run distributed and upgrade e2e on schedule only by @majinghe in https://github.com/rustfs/rustfs/pull/9126
- fix(table-catalog): resolve superseded staged commits by @marshawcoco in https://github.com/rustfs/rustfs/pull/9124
- ci(nightly): dispatch nightly-candidate-ready after asset publish by @majinghe in https://github.com/rustfs/rustfs/pull/9131
- fix(s3select-api): clamp overflowing u64 GetRange values to i64::MAX by @weile321 in https://github.com/rustfs/rustfs/pull/9118
- fix(tls): unify FIPS provider policy across clients by @houseme in https://github.com/rustfs/rustfs/pull/9125
- fix(metrics): reconcile peer-health gauge on successful RPCs and probes by @houseme in https://github.com/rustfs/rustfs/pull/9134
- perf(filemeta): grow metacache read chunks geometrically by @houseme in https://github.com/rustfs/rustfs/pull/9133
- fix(replication): finish writeback for already purged versions by @overtrue in https://github.com/rustfs/rustfs/pull/9135
- fix(heal): preserve lock, format, and repair identity by @houseme in https://github.com/rustfs/rustfs/pull/9132
- feat(fips): route internode RPC HMAC through aws-lc-rs FIPS by @boylee1111 in https://github.com/rustfs/rustfs/pull/9137
- fix(replication): skip site-replication rules in replica delete fan-out by @reatang in https://github.com/rustfs/rustfs/pull/9138
- chore(deps): refresh crate requirements and lockfile by @houseme in https://github.com/rustfs/rustfs/pull/9140
- perf(ecstore,rpc): shard hot-path delete, multipart, and RPC lock tables by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9143
- fix(heal): treat SlowDown as a rate signal and bound page churn by @houseme in https://github.com/rustfs/rustfs/pull/9144
- fix(replication): replay the MRF journal periodically by @reatang in https://github.com/rustfs/rustfs/pull/9139
- ci(nightly): embed the console UI in the GNU nightly build by @majinghe in https://github.com/rustfs/rustfs/pull/9158
- fix(auth): canonicalize s3:VersionId before policy evaluation by @overtrue in https://github.com/rustfs/rustfs/pull/9150
- fix(admin): keep Vault local-file reads on the operator connection by @overtrue in https://github.com/rustfs/rustfs/pull/9152
- fix(s3): reserve the XLDIR directory-marker suffix in client keys by @overtrue in https://github.com/rustfs/rustfs/pull/9153
- fix(ecstore): judge the null version a versionless delete removes by @overtrue in https://github.com/rustfs/rustfs/pull/9151
- fix(auth): build policy conditions from the value a write stores by @overtrue in https://github.com/rustfs/rustfs/pull/9159
- fix(policy): close condition, action, principal and resource gaps by @overtrue in https://github.com/rustfs/rustfs/pull/9160
- fix(ecstore): gate null-version overwrites under Object Lock by @overtrue in https://github.com/rustfs/rustfs/pull/9157
- fix(iam): close identity, session and admin-authorization gaps by @overtrue in https://github.com/rustfs/rustfs/pull/9163
- fix(proxies,targets,obs): bound untrusted input in leaf crates by @overtrue in https://github.com/rustfs/rustfs/pull/9166
- fix(protocols,kms,keystone): enforce client CA, protect the KMS probe by @overtrue in https://github.com/rustfs/rustfs/pull/9168
- fix(api): keep SlowDownRead off write-path quorum failures by @houseme in https://github.com/rustfs/rustfs/pull/9149
- chore(deps): refresh Cargo dependencies by @houseme in https://github.com/rustfs/rustfs/pull/9156
- fix(s3): honor presigned x-amz-meta-* query parameters by @houseme in https://github.com/rustfs/rustfs/pull/9146
- perf(ecstore): skip unmatched FdCache scans and maintenance wakeups by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9165
- perf(ecstore): parallelize bulk-delete lock and metadata fan-out by @houseme in https://github.com/rustfs/rustfs/pull/9155
- fix(s3): report malformed multipart upload IDs as NoSuchUpload by @KarlEmm in https://github.com/rustfs/rustfs/pull/9147
- feat(container): add declarative bucket bootstrap by @jmeiracorbal in https://github.com/rustfs/rustfs/pull/9162
- fix(io-core): preserve pooled capacity and accounting by @houseme in https://github.com/rustfs/rustfs/pull/9171
- fix(s3): treat duplicate CreateBucket as owned by the requester by @cxymds in https://github.com/rustfs/rustfs/pull/9167
- fix(ecstore): streamline lock RPC and listing ownership by @houseme in https://github.com/rustfs/rustfs/pull/9176
- fix(audit): preserve OIDC identity in S3 request audits by @GatewayJ in https://github.com/rustfs/rustfs/pull/9178
- fix(obs): add fine-grained object lock histograms by @houseme in https://github.com/rustfs/rustfs/pull/9177
- fix(storage): bound heal retries and recover pool metadata by @overtrue in https://github.com/rustfs/rustfs/pull/9164
- fix(s3,ecstore,table-catalog): bound work driven by client input by @overtrue in https://github.com/rustfs/rustfs/pull/9172
- chore(ci): bump overtrue/cla-bot to v0.1.0 by @overtrue in https://github.com/rustfs/rustfs/pull/9188
- fix(server): bound rejoin waits and preserve recovery ownership by @houseme in https://github.com/rustfs/rustfs/pull/9181
- fix(sftp): put directory objects as trailing-slash keys by @overtrue in https://github.com/rustfs/rustfs/pull/9180
- fix(ecstore): retry failed internode channel prewarm by @houseme in https://github.com/rustfs/rustfs/pull/9186
- feat(ecstore): record unary gRPC operation duration by @houseme in https://github.com/rustfs/rustfs/pull/9187
- ci: bump overtrue/cla-bot to v0.1.1 by @overtrue in https://github.com/rustfs/rustfs/pull/9189
- fix(observability): avoid duplicate process metric labels by @houseme in https://github.com/rustfs/rustfs/pull/9182
- perf(ecstore): fuse overwrite commits and optimize delete recovery by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9194
- fix(ecstore): preserve multipart shards within write budgets by @cxymds in https://github.com/rustfs/rustfs/pull/9197
- fix(lock): converge cleanup after lost release acknowledgements by @cxymds in https://github.com/rustfs/rustfs/pull/9199
- fix(container): unify directory setup and startup diagnostics by @houseme in https://github.com/rustfs/rustfs/pull/9201
- fix(scanner): bound wide bucket-root fanout memory by @overtrue in https://github.com/rustfs/rustfs/pull/9193
- fix(cors): isolate cache variants and streamline policy evaluation by @houseme in https://github.com/rustfs/rustfs/pull/9203
- fix(webdav): support configured browser CORS access by @houseme in https://github.com/rustfs/rustfs/pull/9205
- test(e2e): fix quota and conditional write fixtures by @overtrue in https://github.com/rustfs/rustfs/pull/9210
- test(storage): reproduce HTTPS rejoin readiness in Docker by @houseme in https://github.com/rustfs/rustfs/pull/9206
- fix(s3): retain protected multipart ETags in object listings by @houseme in https://github.com/rustfs/rustfs/pull/9208
- fix(lock): preserve acquisition progress during multipart uploads by @cxymds in https://github.com/rustfs/rustfs/pull/9209
- fix(runtime): release retained replay and allocator memory by @overtrue in https://github.com/rustfs/rustfs/pull/9211
- fix(ecstore): preserve ownership across multi-pool recovery by @overtrue in https://github.com/rustfs/rustfs/pull/9212
- fix(webdav): join connection and reload tasks on shutdown by @overtrue in https://github.com/rustfs/rustfs/pull/9213
- fix(storage): fence bounded deletes during rolling upgrades by @overtrue in https://github.com/rustfs/rustfs/pull/9214
- fix: preserve usage generations and unify request tracing by @houseme in https://github.com/rustfs/rustfs/pull/9204
- fix(cors): preserve readiness and complete cache selectors by @houseme in https://github.com/rustfs/rustfs/pull/9207
- fix(table-catalog): reject storage credentials for catalog access by @marshawcoco in https://github.com/rustfs/rustfs/pull/9185
- feat(tier): support native Azure Blob endpoints by @cxymds in https://github.com/rustfs/rustfs/pull/9200
- feat(observability): record unary read RPC durations by @houseme in https://github.com/rustfs/rustfs/pull/9202
- fix(ecstore): complete and abort native multipart uploads on Windows by @reatang in https://github.com/rustfs/rustfs/pull/9191
- test(rio,ecstore): add negative-branch durability unit tests by @boylee1111 in https://github.com/rustfs/rustfs/pull/9216
- fix(swift): preserve bucket metadata with Swift tag values by @overtrue in https://github.com/rustfs/rustfs/pull/9218
- fix(decommission): reserve owned source usage during activation by @overtrue in https://github.com/rustfs/rustfs/pull/9220
- fix(ci): bound workspace archive builds to two workers by @overtrue in https://github.com/rustfs/rustfs/pull/9222
- fix(ci,ecstore): restore validation and defer capacity exhaustion by @overtrue in https://github.com/rustfs/rustfs/pull/9223
- refactor(table-catalog): retire durable-strong backing by @marshawcoco in https://github.com/rustfs/rustfs/pull/9130
- fix: correct scanner pacing and unverified MRF outcomes by @cxymds in https://github.com/rustfs/rustfs/pull/9225
- chore(deps): update flake.lock by @houseme in https://github.com/rustfs/rustfs/pull/9236
- fix(cache): respect process cgroup memory limits by @overtrue in https://github.com/rustfs/rustfs/pull/9232
- fix(rpc): size and reserve replay cache for compact entries by @overtrue in https://github.com/rustfs/rustfs/pull/9233
- fix(select): bound Parquet allocations before decoding by @overtrue in https://github.com/rustfs/rustfs/pull/9231
- perf(ecstore): optimize PUT, DELETE, and multipart commit hotpaths by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9227
- fix: reduce scanner backoff and classify downstream closures by @cxymds in https://github.com/rustfs/rustfs/pull/9235
- ci: repair e2e selection and verify tool downloads via API by @cxymds in https://github.com/rustfs/rustfs/pull/9240
- fix(select): bound LZ4 scratch and Arrow schema expansion by @overtrue in https://github.com/rustfs/rustfs/pull/9237
- fix(rpc): bound replay memory and atomically admit signed requests by @overtrue in https://github.com/rustfs/rustfs/pull/9238
- fix(ecstore): decouple pool metadata health from the authority gate by @overtrue in https://github.com/rustfs/rustfs/pull/9241
- fix(catalog): enumerate table owners without skipping namespaces by @overtrue in https://github.com/rustfs/rustfs/pull/9242
- fix(ecstore): remove hardlinked backup during delete rollback by @RamakrishnaChilaka in https://github.com/rustfs/rustfs/pull/9239
- fix(tier): recover orphaned prepared mutations by @overtrue in https://github.com/rustfs/rustfs/pull/9246
- chore(release): prepare 1.0.5 by @overtrue in https://github.com/rustfs/rustfs/pull/9249
- fix: preserve scanner backlog authority after pool replacement by @overtrue in https://github.com/rustfs/rustfs/pull/9252
- revert(release): defer certification rollout for 1.0.5 by @overtrue in https://github.com/rustfs/rustfs/pull/9254
- @alpbeysir made their first contribution in https://github.com/rustfs/rustfs/pull/8555
- @limitcool made their first contribution in https://github.com/rustfs/rustfs/pull/8568
- @cozima made their first contribution in https://github.com/rustfs/rustfs/pull/8860
- @jim-czcbangkai made their first contribution in https://github.com/rustfs/rustfs/pull/8889
- @loopingz made their first contribution in https://github.com/rustfs/rustfs/pull/8939
- @RaphaelFakhri made their first contribution in https://github.com/rustfs/rustfs/pull/8927
- @pentacore made their first contribution in https://github.com/rustfs/rustfs/pull/8998
- @aepod made their first contribution in https://github.com/rustfs/rustfs/pull/9067
- @timootten made their first contribution in https://github.com/rustfs/rustfs/pull/9069
- @SavvySloth made their first contribution in https://github.com/rustfs/rustfs/pull/9079
- @boylee1111 made their first contribution in https://github.com/rustfs/rustfs/pull/9084
- @weile321 made their first contribution in https://github.com/rustfs/rustfs/pull/9118
- @jmeiracorbal made their first contribution in https://github.com/rustfs/rustfs/pull/9162
Full Changelog: https://github.com/rustfs/rustfs/compare/1.0.4...1.0.5-preview.1