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
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
v2.2.6
This release includes 76 updates covering feature enhancements, bug fixes, performance optimizations, and more.
- New Features: 2
- Bug Fixes: 49
- Refactoring & Optimizations: 8
- Documentation Updates: 10
- Test Improvements: 7
-
Related PR: #5328
Contributor: @higress-release-automation[bot]
Change Log: This PR prepares the plugin snapshot v2.2.6 release by introducing three JSON manifest files—evidence,plans, andsnapshots—to record version hashes, source commits, baseline commits, and plugin dependency relationships. It also updates theai-agentandai-cacheplugin versions to2.0.4.
Feature Value: Ensures traceability and verifiability of the plugin release process, improving version consistency and supply-chain security; users can reliably deploy specific plugin versions based on authoritative snapshots, reducing runtime anomalies caused by version mismatches. -
Related PR: #5263
Contributor: @sunxia0
Change Log: Introduces theserver.passthroughInstructionsconfiguration option, enabling optional passthrough of upstreaminstructionsstrings in MCP proxy discovery responses. It reuses existingRouteCalland authentication policies, safely extracting and injecting only valid instructions; excessively long or invalid values are automatically omitted from the field.
Feature Value: Enables the MCP gateway to flexibly preserve upstream services’ original instruction descriptions, enhancing completeness and traceability of tool discovery information; users may enable it on demand to avoid client behavioral deviations due to lost instructions, without disrupting existing authentication, routing, or error-handling semantics.
-
Related PR: #5323
Contributor: @johnlanni
Change Log: Upgrades the Istio submodule to commit383f79d, integrating an SRDS gateway cache fix: route caching now depends solely on the actually selected HTTP/HTTP3 gateways; modifications to unselected gateways precisely invalidate only corresponding host cache entries, eliminating O(n²)-complexity cache invalidation overhead.
Feature Value: Significantly improves configuration propagation speed and control-plane responsiveness under large-scale Ingress scenarios, avoiding latency jitter caused by global cache refreshes and enhancing gateway service stability and scalability; users experience faster application of route changes. -
Related PR: #5321
Contributor: @johnlanni
Change Log: Fixes a path traversal vulnerability arising from unescaped path parameters in REST-to-MCP request URLs. Addsurl.PathEscapefor path-segment escaping, multi-layer encoding validation (e.g.,%2e%2e), explicit enable/disable switches for unsafe path parameters, and supporting template functions—enhancing Nacos/registry configuration passthrough capabilities.
Feature Value: Prevents maliciously crafted path parameters from bypassing interface boundaries to access backend sensitive endpoints, improving MCP gateway security; default blocking of dangerous path patterns post-upgrade reduces risks of privilege escalation due to misconfigured templates, while providing secure migration options to ensure compatibility. -
Related PR: #5317
Contributor: @johnlanni
Change Log: Fixes an issue where requests may stall indefinitely causing503errors whenglobal_inflight_enabledis enabled. Changes the return value of the asynchronous scheduling path toHeaderStopAllIterationAndWatermark, ensuring callbacks correctly resume request processing.
Feature Value: Prevents users from encountering persistent503 cluster_not_founderrors after enabling global concurrency limiting, enhancing the stability and availability of the AI load balancer under high-concurrency scenarios and ensuring service continuity. -
Related PR: #5316
Contributor: @johnlanni
Change Log: Fixes a signature verification security vulnerability in thehmac-auth-apisixplugin by adoptingcrypto/subtle.ConstantTimeComparefor constant-time signature comparison and removing signature logging to prevent side-channel attacks and sensitive information leakage.
Feature Value: Enhances API authentication security by mitigating timing-attack risks that could allow signature bypass; simultaneously eliminates plaintext signature logs, satisfying security compliance requirements and protecting users’ keys and credentials from accidental exposure. -
Related PR: #5315
Contributor: @johnlanni
Change Log: Fixes strictness issues in the AI data sanitization plugin’s parsing of the OpenAIcontentfield. ModelscontentasOption<MessageContent>to support either string or content fragment arrays; mapsnull/missing values toNone, and rejects malformed structures with fail-closed behavior.
Feature Value: Improves plugin robustness and security, preventing silent parsing failures due to invalid OpenAI message bodies and ensuring malformed requests are explicitly intercepted with appropriate error responses—strengthening the API gateway’s ability to validate AI service protocol conformance. -
Related PR: #5311
Contributor: @zhihao-yuan
Change Log: Fixes ID confusion and incorrect usage statistics in Claude streaming responses caused by shared state across multiple concurrent requests. Moves state fields (messageId,usage,serviceTier) from provider-level to per-requestHttpContext, ensuring isolation of streaming responses.
Feature Value: Prevents users from receiving incorrect response IDs or mixed token usage data during concurrent Claude service calls, enhancing AI proxy service stability and billing accuracy, and ensuring reliability of streaming experiences in multi-user/multi-session contexts. -
Related PR: #5309
Contributor: @sunxia0
Change Log: Fixes MCP server SSE response parsing logic to prioritize standard'data: {...}'format matching; if no match occurs, the first whitespace-freedataline is cached as a fallback, preventing early whitespace-free notifications from overwriting subsequent valid-format responses.
Feature Value: Resolves backend compatibility issues, ensuring MCP services with varying SSE formats initialize and extract responses correctly; improves system robustness and cross-platform compatibility, reducing connection failures or data loss caused by format discrepancies. -
Related PR: #5305
Contributor: @sunxia0
Change Log: Fixes missing support for the2025-11-25MCP protocol version in the MCP server, extending initialization handshake logic to recognize and respond correctly to this version, while retaining the2025-06-18fallback mechanism and enforcing strict rejection of unknown versions.
Feature Value: Allows MCP clients to successfully complete initialization negotiation using the2025-11-25protocol version, improving protocol compatibility and service stability; avoids handshake failures due to unregistered versions, ensuring smooth coexistence and evolution of legacy and new tool clients. -
Related PR: #5294
Contributor: @johnlanni
Change Log: Fixes MCP user-level access control logic by binding user identity to the authenticated consumer, verifying consistency between the URL pathuidand the actual authenticated subject, strengthening401/403error responses, and refactoring Redis key generation logic to be based on(serverName, consumer)for user-level configuration and rate limiting management.
Feature Value: Strengthens MCP service security and permission isolation, preventing unauthorized access to user-specific services; users gain more precise personalized configurations, rate limits, and allowlist controls when enablinguser-level-server, avoiding privilege bypass risks due to path spoofing. -
Related PR: #5293
Contributor: @johnlanni
Change Log: Removes the dangerousx-higress-mcpserver-configrequest header during theDecodeHeadersphase at the Ingress layer and in MCP-related routing configurations, preventing its malicious construction and impact on dynamic user-level MCP server configuration—including coverage of custom VirtualService and controller-generated routes.
Feature Value: Enhances system security and configuration isolation by preventing clients from forging configuration headers that cause the server to misapply unintended MCP service configurations, ensuring reliable and independent MCP session configurations for each tenant in multi-tenant environments and lowering potential security and runtime anomaly risks. -
Related PR: #5292
Contributor: @johnlanni
Change Log: Fixes multi-tenancy data isolation issues in the AI cache plugin by incorporating consumer identity (x-mse-consumer) into SHA256 hash computation to construct versioned cache keys (v2:prefix+hex(consumer\0rawKey)), ensuring full isolation of cached data across authenticated consumers, with legacy unversioned keys automatically invalidated.
Feature Value: Prevents cross-user cache pollution or unauthorized access, improving AI service multi-tenancy security and reliability; cold starts triggered post-upgrade are expected behavior; English and Chinese READMEs have been updated synchronously with migration notes to reduce operational risk. -
Related PR: #5291
Contributor: @johnlanni
Change Log: Fixes a plugin request body validation defect by integratingwasm-go v1.2.0’sRequireRequestBody()API, ensuringext-authandhmac-auth-apisixplugins force-read and pass raw request bodies for binary, gRPC, and encoding-oriented Content-Types (e.g.,application/octet-stream) whenwith_request_bodyis enabled—avoiding body skipping due to type recognition mismatches.
Feature Value: Improves reliability and consistency of request-body–dependent authorization plugins, guaranteeing stable triggering of authorization calls regardless of requestContent-Typewhenwith_request_body:trueis configured—preventing authorization omissions or logic anomalies caused by undelivered bodies and strengthening API security protection. -
Related PR: #5289
Contributor: @johnlanni
Change Log: Fixes JSON Schema validation of request bodies supporting onlyobjecttype by adopting a defensive decoder directly handling raw byte streams, enabling validation of all top-level JSON types (array,string,number,boolean, and malformed JSON), thus avoiding validation skip due to deserialization failure.
Feature Value: Enhances robustness and security of API gateway request-body validation, ensuring non-object JSON (e.g., arrays, strings) is validated correctly and preventing illegitimate or unexpected JSON formats from bypassing validation logic—improving server-side data consistency and defensive capability. -
Related PR: #5288
Contributor: @johnlanni
Change Log: Fixes the default behavior ofsigned_headersin thehmac-auth-apisixplugin: when not explicitly configured, it now defaults to signing thedateheader, binding the request signature to a timestamp and enablingclock_skewvalidation; previously, omission resulted in staticstring-to-signcontaining only the key ID, completely losing replay protection and timeliness guarantees.
Feature Value: Enhances HMAC authentication security and compatibility, aligning plugin behavior with Apache APISIX semantics; users obtain date-based clock skew validation out-of-the-box without additional configuration, effectively defending against replay attacks and reducing security risks from missing critical signed headers. -
Related PR: #5287
Contributor: @johnlanni
Change Log: Adds configurable Redis failure handling modes (fail_open/fail_closed) to thecluster-key-rate-limitandreplay-protectionplugins, uniformly handling all Redis exception types, and ensuringfail_closedreturns a fixed503without emitting theX-RateLimitheader to distinguish infrastructure failures from business rate limiting.
Feature Value: Enhances plugin reliability and observability when Redis is unavailable; users can select degradation strategies according to business tolerance:fail_openensures service availability, whilefail_closedstrictly blocks requests and clearly signals infrastructure failure, aiding rapid root-cause diagnosis by operations teams. -
Related PR: #5283
Contributor: @lxcxjxhx
Change Log: Fixes a header-skip order bug in the canary feature: the original logic skipped header checks before evaluatingrewrite.host, causing non-HTML requests that should have been skipped still injectedx-higress-tagand rewrote:authority.
Feature Value: Ensures requests matchingskippedByHeadersconfigurations (e.g., API requests) are correctly skipped from canary processing, avoiding unnecessary header injection and host rewriting—improving routing accuracy and service stability, which is critical for users relying on headers to control canary behavior. -
Related PR: #5282
Contributor: @sunxia0
Change Log: Fixes compatibility issues between Modern and Legacy business logic in the MCP server: unifies request budgeting, tool execution sharing, and descriptor handling, removes redundant schema preparation logic, and ensures HTTP error responses correctly retain historicalRetry-After/WWW-Authenticateheaders.
Feature Value: Improves MCP service stability and consistency in hybrid deployment scenarios, preventing request failures or authentication anomalies due to split business policies and ensuring seamless user migration during upgrades—lowering operational complexity and compatibility risk. -
Related PR: #5277
Contributor: @qinfeng0214
Change Log: Fixes token usage undercounting in streaming SSE responses caused byusagefield fragmentation across chunks, introducingsseFramerfor unified frame parsing and performing deferred parsing of incomplete tail segments atendOfStream, ensuring accurate counting of everyusageevent.
Feature Value: Resolves token usage undercounting in AI services’ streaming-response scenarios, safeguarding quota control and rate-limiting accuracy—preventing users from being erroneously rate-limited or overspending, thereby enhancing billing and resource-management reliability. -
Related PR: #5273
Contributor: @qinfeng0214
Change Log: FixesoutputParserpanics caused by slice-out-of-bounds errors when encountering single code fences or nonstandard model outputs, enhances boundary-checking logic, and adds comprehensive unit tests covering various anomalous response scenarios.
Feature Value: Improves AI proxy robustness and stability, preventing service crashes due to minor model output formatting deviations and ensuring reliable and available AI capability invocation for users in real-world scenarios. -
Related PR: #5270
Contributor: @qinfeng0214
Change Log: Fixes erroneous acceptance of negativekv_cache_usage_percsamples in KV cache utilization metrics by adding validation for negative values inParseCompactVLLMMetrics, preventing incorrect mapping to1.0(maximum score) viatransformOneMinus, which would reverse routing logic.
Feature Value: Prevents AI endpoint misrouting due to metric anomalies, ensuring overloaded endpoints are not mistakenly deemed idle—improving service routing accuracy and system stability and guaranteeing users’ requests are correctly distributed to genuinely available inference nodes. -
Related PR: #5260
Contributor: @Metastarx
Change Log: Fixes potential overriding of user-managed Secrets during automatic HTTPS certificate renewal by adding Secret annotation validation logic: only Secrets managed by Higress are allowed for update, and domain matching is enforced, alongside improved error log handling.
Feature Value: Prevents accidental overwriting of user-defined TLS certificates, enhancing system security and stability; users can confidently manage their own Secrets without risking service disruption or credential loss due to certificate updates, strengthening production environment reliability. -
Related PR: #5242
Contributor: @dxz0069
Change Log: FixesMessageWindow::pop()panic caused by unchecked length in non-UTF-8 streaming response bodies, adding an early-return guard (len <= byte_window_size) in the non-UTF-8 branch to prevent mid-response crashes.
Feature Value: Improves stability and robustness of the AI data sanitization plugin when processing abnormally encoded streaming responses, preventing service interruption due to invalid byte streams—ensuring continuity and reliability of user API calls. -
Related PR: #5224
Contributor: @lljjcc426
Change Log: Fixes incorrect UTF-8 multibyte character truncation in thetruncateStringfunction of thejsonrpc-converterplugin by locating the nearest rune start position (utf8.RuneStart) to ensure prefixes and suffixes are valid UTF-8 strings—avoiding invalid UTF-8 sequences in header values.
Feature Value: Prevents invalid UTF-8 sequences in HTTP headers resulting from truncation, avoiding downstream service parsing failures or security-triggered blocks; improves internationalization compatibility and stability of JSON-RPC and MCP protocols, ensuring proper passthrough of Unicode-character–containing request headers (e.g., Chinese). -
Related PR: #5219
Contributor: @zhaohai666
Change Log: Adds strict validation of themodeparameter in thecluster_metricsload-balancing strategy, accepting only four legal values (LeastBusy,LeastFirstTokenLatency,LeastTotalLatency,Adaptive); illegal values trigger immediate errors and initialization rejection to prevent silent fallback to uniform random routing.
Feature Value: Prevents undetected load-balancing strategy failures caused by typos, case mismatches, or missingmodevalues, improving configuration reliability and operational observability—ensuring AI traffic distribution adheres to intended policies and avoiding potential performance degradation. -
Related PR: #5216
Contributor: @qinfeng0214
Change Log: Fixes incorrect host counter rollback in theglobal_least_requestload-balancing strategy: when RedisEVALreturns an exception orSetUpstreamOverrideHostfails, already-incremented host counters were not reverted, causing subsequent requests to incorrectly avoid that host.
Feature Value: Improves accuracy and stability of the AI load balancer, preventing traffic distribution skew and prolonged erroneous host exclusion caused by inaccurate counters—ensuring high service availability and optimal resource utilization. -
Related PR: #5209
Contributor: @zhihao-yuan
Change Log: Refactors streaming response handling logic, separating text-content and protocol-event processing; adds full support fortool call,role,refusal, unknown fields, and error events; optimizes end-frame and empty-frame handling to prevent tool-call content loss and premature consumption of[DONE].
Feature Value: Fixes loss of tool-call names and parameters in streaming responses within the AI data sanitization plugin, ensuring agents correctly receive and execute tool calls—significantly improving Higress’s stability and compatibility as an AI gateway in complex agent scenarios. -
Related PR: #5208
Contributor: @BenRobinson-hub
Change Log: Fixes request hanging in the OPA plugin upon synchronousDispatchHttpCallfailure by modifying theopaCallfunction to send503responses instead of indefinite suspension on synchronous errors—avoiding downstream client timeouts—and adds unit test coverage for synchronous call errors.
Feature Value: Enhances reliability and observability of the OPA policy decision service, preventing indefinite Envoy proxy request hangs due to upstream OPA service unavailability—ensuring rapid failure and clear error responses for user requests and reducing cascading failure risk. -
Related PR: #5205
Contributor: @Metastarx
Change Log: Adds read-write mutual exclusion locks to the Nacos MCP registry, encapsulating access to shared data structures—tool descriptors, RPC contexts, service sets, and listeners—within lock-protected helper functions to avoid fatal errors from concurrent reads/writes.
Feature Value: Fixes gateway crashes under high concurrency due to race conditions, significantly improving service stability and reliability—ensuring the Nacos registry operates normally during continuous refreshes and multi-request access, lowering production environment failure risk. -
Related PR: #5204
Contributor: @tju-yxq
Change Log: Fixes connection leakage in the Eureka HTTP client caused by un-closed response bodies and correctsRetryDelayTimeunits to milliseconds to ensure retry delay configuration takes effect properly; adds comprehensive unit tests covering related logic.
Feature Value: Avoids resource exhaustion and memory leaks caused by unclosed HTTP connections, improving long-term stability of the service registry; correct retry delay time interpretation makes fault recovery behavior more predictable and enhances system resilience during Eureka outages. -
Related PR: #5199
Contributor: @lizexinxin
Change Log: Fixes incorrect application of SSL redirect annotations to MCP server Ingress resources by adding MCP server Ingress detection and skipping logic in the redirect parsing routine, supplemented with corresponding unit tests to verify correctness.
Feature Value: Prevents unintended redirection of MCP server traffic, ensuring HTTP/TLS listeners correctly point to target clusters—improving accuracy and stability of multi-cluster service routing and guaranteeing control-plane communication reliability. -
Related PR: #5145
Contributor: @NUAAwqy
Change Log: Fixes the ignored--agentrunflag in thehgctl agent deploycommand: declares thecloudvariable earlier indeploy.goand passes it correctly toDeployHandler, and correctsgetAgentTypelogic to avoid overwriting user-specified deployment types.
Feature Value: Users can now truly control agent deployment targets (local vs. cloud) via the--agentrunflag, resolving the prior issue where this parameter was effectively inert—enhancing CLI tool reliability and documentation trustworthiness, ensuring automation workflows execute as intended. -
Related PR: #5144
Contributor: @yx9o
Change Log: Fixes HTTP500errors in the AI JSON Response plugin when no JSON schema is provided, caused by attempting to compile an empty schema. Adds conditional logic to enable compilation and validation only whenjsonSchemais present, preventing nil-map-to-null conversion exceptions.
Feature Value: Users no longer encounter unexpected500errors when invoking AI APIs in schema-free mode—significantly improving service stability; retains existing schema-based functionality and error-code semantics (e.g.,1001remains unchanged), ensuring backward compatibility and observability. -
Related PR: #5126
Contributor: @Metastarx
Change Log: Fixes panics in theai-ragplugin caused by unvalidated empty embedding arrays in embedding interface responses, adding status-code checks, JSON deserialization error handling, and explicit rejection logic for empty embedding arrays—enhancing robustness.
Feature Value: Prevents plugin crashes and request failures due to abnormal upstream service responses (e.g., quota exceeded,5xxerrors, invalid JSON)—improving RAG functionality stability and user-experience reliability, ensuring production-service continuity. -
Related PR: #5124
Contributor: @johnlanni
Change Log: Adds theDuplicateTopLevelMemberhelper function, detecting duplicate top-levelmodelfields in request bodies via single-pass structural scanning to avoid JSON parsing ambiguity; performs pre-validation in the AI load balancer and returns400errors to halt subsequent routing, auth, and mapping logic.
Feature Value: Enhances robustness and consistency of OpenAI-compatible interfaces, preventing unpredictable routing or auth behaviors caused by duplicatemodelfields—ensuring users receive clear error feedback, lowering debugging costs, and improving API reliability. -
Related PR: #5122
Contributor: @johnlanni
Change Log: Enforces HTTP Basic authentication for the MCP server database server type (GORM backend) during configuration parsing, validating non-emptyusername/password, aligning database service authentication behavior with RAG service—improving security.
Feature Value: Prevents unauthorized access to the database MCP service, avoiding sensitive data leakage; requires users to provide valid credentials in configuration, raising the security baseline for production environments and complying with least-privilege principles and enterprise security compliance requirements. -
Related PR: #5121
Contributor: @Metastarx
Change Log: Fixes inconsistent message publishing and subscription for MCP SSE sessions during Redis backend hot updates: binds each SSE session to its initial Redis client to prevent mixing old/new Redis clients due to filter config hot updates—ensuring messages always remain in closed-loop transmission within original pub/sub channels.
Feature Value: Guarantees strong consistency and reliability of MCP SSE sessions, preventing response loss or corruption in user sessions; improves system stability during dynamic configuration updates, lowering operational complexity and online failure risk. -
Related PR: #5092
Contributor: @Metastarx
Change Log: Fixes theqwen3guardplugin returning non-streaming JSON responses forstream=truerequests, adding SSE streaming denial-response support; dynamically selectsContent-Typeand response format by parsing thestreamfield in requests and updating README documentation.
Feature Value: Aligns interception denial responses with the client’sstreamflag, resolving empty-message display issues in streaming clients like Dify caused by missingdata:frames—improving compatibility and user experience, ensuringdenyMessagerenders correctly in workflows. -
Related PR: #5085
Contributor: @Metastarx
Change Log: Fixes panics inai-proxywhen parsing malformedcontentsections (e.g., emptyimage_urlobjects, non-string fields, missinginput_audio/filefields) by returning structured error responses instead—enhancing service robustness.
Feature Value: Prevents service crashes due to noncompliant user messages, improving API stability and availability; users receive clear error prompts instead of500responses, facilitating rapid identification and correction of request data issues. -
Related PR: #5083
Contributor: @Metastarx
Change Log: Fixes invalid JSON formatting in AI proxy plugin streaming SSE responses: the original hand-written JSON template failed to JSON-escape model outputs, breaking JSON structure with quotes, backslashes, and newlines, andtrimoperations erroneously removed legitimate leading/trailing quotes; replaced with standard JSON serialization to ensure valid SSE frames.
Feature Value: Ensures all standards-compliant SSE clients can correctly parse AI streaming responses, avoiding conversation interruption or display anomalies caused by JSON parsing failures—improving plugin stability and compatibility in production, especially critical for frontend applications strictly adhering to SSE specifications. -
Related PR: #5082
Contributor: @Metastarx
Change Log: Fixestokenrate limiter panics andfail-openbypass caused by malformedreal-IPrequest headers (e.g.,]or]:80); replaces vulnerablestrings.Splitwith safestrings.TrimPrefixfor IPv6 bracket removal and enhances IP parsing robustness.
Feature Value: Prevents attackers from bypassing rate limiting via maliciousreal-IPheaders, ensuring mandatory enforcement of AI token rate-limiting policies; improves gateway stability and security under anomalous traffic, avoiding critical protection failures due to panic recovery. -
Related PR: #5080
Contributor: @zhihao-yuan
Change Log: Fixes token undercounting and omission in non-streaming JSON responses: fully buffersapplication/jsonresponses hitting rate-limit rules before parsing to avoid incomplete JSON parsing from fragmented responses; optimizes MIME-type recognition to support case-insensitivity and parameters, excluding nonstandard cases like JSONP.
Feature Value: Improves accuracy of AI token usage statistics, ensuring rate-limiting policies enforce strictly; prevents undetected overspending due to undercounting, safeguarding service stability and billing compliance; users gain more reliable rate limiting without modifying business code. -
Related PR: #5079
Contributor: @Metastarx
Change Log: Fixes GraphQL variable injection vulnerabilities: enforces strict type validation and JSON escaping forInt/Float/Booleanvariables to prevent attackers from injecting arbitrary fields into thevariablesobject via malicious query parameters—preventing server-side logic tampering.
Feature Value: Enhances GraphQL gateway security, preventing privilege escalation or service anomalies caused by variable pollution; users gain protection without modifying business code, lowering API exploit risk and strengthening production environment stability. -
Related PR: #5029
Contributor: @sunxia0
Change Log: Fixes MCP server main-route proxy compatibility issues, restoring correct integration of HTTP MCPtools/listandtools/callwith theRouteCallSDK underlegacy/modern/autostrategies—ensuring request filtering, header/path rewriting, timeout, retry, and hashing policies work properly, while maintaining control-RPC execution as sidecalls.
Feature Value: Resolves tool-call failure issues in MCP services under multi-strategy routing, improving routing compatibility and stability; users restore cross-strategy tool-call capability without changing existing configurations and ensure correct passthrough of critical contextual headers (e.g.,Cookie, tenant headers), lowering upgrade risk. -
Related PR: #5000
Contributor: @Metastarx
Change Log: Fixesindex-out-of-rangepanics in Chroma vector provider’sparseQueryResponsefunction when handling empty responses (e.g., missingidsfield or emptyidsarray), adding boundary checks and error-handling logic to ensure HTTP callbacks complete normally and invokehandleQueryResults.
Feature Value: Prevents entire AI cache query requests from hanging or crashing due to abnormal empty Chroma service responses (e.g., unknown collection errors, emptyidsarrays)—improving system stability and fault tolerance, ensuring continued availability of AI-related features for users. -
Related PR: #4950
Contributor: @yyqdbngt
Change Log: FixesParseIPpanic caused by empty-string slicing when parsing malformed IPv6-formattedReal-IPheaders (e.g.,']'or']:80') by adopting safe substring extraction logic and adding boundary checks.
Feature Value: Prevents attackers from triggering cluster rate-limiting plugin crashes via maliciousX-Forwarded-Forheaders, improving gateway stability and security when per-IP rate limiting relies on header-extracted IPs. -
Related PR: #4948
Contributor: @yyqdbngt
Change Log: Fixesgeo-ippluginParseIPpanic when processing malformedReal-IPheaders (e.g.,"]"or"]:80") caused by empty-string slicing, replacingstrings.Splitwithstrings.TrimPrefixfor safe IPv6 address extraction and enhancing boundary validation.
Feature Value: Prevents WASM plugin crashes triggered by maliciousX-Forwarded-Forheaders, improving gateway stability and security in proxy scenarios and ensuring service availability under anomalous traffic. -
Related PR: #4946
Contributor: @btlqql
Change Log: Fixes unescaped user-inputpromptin upstream request-body construction for the ChatGPT proxy plugin by importing theencoding/jsonpackage and usingjson.Marshalto safely serializepromptand other fields—preventing JSON formatting errors or semantic tampering caused by quotes, backslashes, and newlines.
Feature Value: Prevents API request failures or silent content modification caused by malicious/special-character prompts, improving service stability and security; users submitting prompts with quotes, backslashes, or newlines can transmit them accurately to upstream models—ensuring interaction consistency and reliability. -
Related PR: #4944
Contributor: @btlqql
Change Log: Fixes panics in the IP restriction plugin when parsing malformedReal-IPrequest headers (e.g.,']'or']:80') caused by empty-string slicing, adopting safe string-trimming logic and adding boundary validation.
Feature Value: Prevents WASM plugin crashes triggered by maliciousX-Forwarded-Forheaders, improving gateway robustness and security when IP sources are header-configured—avoiding service interruption risks. -
Related PR: #4882
Contributor: @Metastarx
Change Log: Fixes nil-pointer dereference inFilterGrayRuleof thefrontend-grayplugin when rules arenil, adding safety checks forGetRulereturningnil, and introducing gray-deployment-and-rule-name consistency validation during config parsing to prevent silent failure due to missing rules.
Feature Value: Prevents panic-induced silent swallowing byrecoverFuncin canary releases caused by config mismatches, ensuring configuration errors surface promptly and fail fast—improving canary stability and observability and guaranteeing reliability of user traffic routing.
-
Related PR: #5330
Contributor: @johnlanni
Change Log: This PR primarily updates the project version number: upgradesVERSIONfile andappVersioninhelm/coreandhelm/higress Chart.yamlfrom2.2.5to2.2.6, and synchronizes thehigress-coredependency version inChart.lockto ensure Helm chart version consistency.
Feature Value: Provides users with a standardized v2.2.6 release package, ensuring strict version alignment of all components (core, console, plugin-server) during Helm deployments—improving installation stability and reproducibility and lowering operational upgrade risk. -
Related PR: #5324
Contributor: @johnlanni
Change Log: Upgrades Envoy data-plane dependencies to version1.36.12, updating submodule commits, Go module replacement paths, and build image URLs, and synchronizing references to amd64/arm64 multi-architecture release packages—ensuring build consistency and upstream compatibility.
Feature Value: Enhances Higress gateway security, stability, and performance; users transparently benefit from Envoy’s latest patches and optimizations, lowering potential vulnerability risks and improving deployment reliability and compatibility across multi-architecture environments. -
Related PR: #5319
Contributor: @johnlanni
Change Log: Modifies CI workflows to automatically publish WASM content formcp-server v2.0.3to legacy paths (1.0.0/2.0.0) duringplugin-serverbuilds, and adds compatibility tests verifying this behavior—ensuring legacyWasmPluginCRs continue loading without modification.
Feature Value: Ensures smooth upgrades for existing users, preventing runtime loading failures due to plugin path changes; lowers migration cost and enhances backward compatibility and stability—especially critical for production plugin configurations relying on fixed paths. -
Related PR: #5314
Contributor: @johnlanni
Change Log: Unifies and explicitly pins the Go toolchain version in CI/CD workflows to1.26.10, replacing prior dynamic reading viago.mod, adds toolchain version pinning and verification guidance toRELEASE.md, and cleans up obsoleteGO_VERSIONvariables inprebuild.sh.
Feature Value: Improves reproducibility and consistency of release builds, avoiding toolchain version drift due to differinggodirectives in modules; users receive more stable, verifiable binary artifacts, strengthening security audit and compliance capabilities. -
Related PR: #5312
Contributor: @johnlanni
Change Log: Changes the controller’s xDS gRPC listener address from wildcard binding (:15051/:15010) to loopback-only binding (127.0.0.1), and removes the exposed plaintext xDS ports15010and15051from the Service—tightening the default network attack surface.
Feature Value: Enhances controller security by preventing non-local components from accidentally accessing sensitive xDS interfaces; reduces attack surface, aligning with the principle of least privilege—functionally transparent to users but strengthens production deployment security baselines. -
Related PR: #5276
Contributor: @johnlanni
Change Log: Removesgolangci-lintsource dependencies (go.mod/go.sum/pin.go) in favor of the official precompiled binaryv2.15.0, secured via fixed SHA-256 checksum validation; migrates configuration tov2schema while retaining the 10-minute timeout limit.
Feature Value: Reduces build dependency complexity and security risk, accelerating CI lint-stage execution; avoids indirect dependency contamination of the project module graph, improving maintainability and reproducibility; no functional impact for end users but strengthens the stability and compliance of the code-quality assurance system. -
Related PR: #5125
Contributor: @johnlanni
Change Log: Replaces error-pronefmt.Sprintfstring concatenation for generating MCP server filter configurations in Ingress with typed-struct–basedencoding/jsonserialization—enhancing automatic field-value escaping and type safety, and unifying rendering logic.
Feature Value: Improves robustness and maintainability of configuration generation, avoiding Envoy configuration failures caused by JSON injection or formatting errors—making Ingress rule matching more stable and reliable, indirectly enhancing accuracy and security of user service routing and traffic management. -
Related PR: #5123
Contributor: @johnlanni
Change Log: Disables server reflection for xDS configuration push gRPC listeners in production environments to prevent easy enumeration of services and RPC interfaces; adds new unit tests explicitly locking down default gRPC configuration to enhance traceability of config changes and regression protection.
Feature Value: Enhances controller security in production environments by reducing the attack surface; locking default configuration via tests improves system stability and maintainability and reduces potential runtime anomalies caused by implicit config changes—delivering significant value to operations and security teams.
-
Related PR: #5318
Contributor: @johnlanni
Change Log: Fixes four lingering Git conflict markers (<<<<<<<,=======,>>>>>>>) in the MCP server Chinese README, adjusts the positions of sections “Main Request Forwarding Compatibility” and “Explicitly Deferred Scope” to align with the English version structure—ensuring readability and maintainability.
Feature Value: Eliminates confusing conflict markers in documentation, improving user reading experience and technical documentation credibility; unifies Chinese/English README structure, lowering multilingual maintenance cost and preventing developers from misconfiguring due to misinterpreting conflict content. -
Related PR: #5206
Contributor: @tju-yxq
Change Log: Corrects erroneous descriptions in migration documentation regarding Nginx annotation compatibility: removes 12 authentication-related annotations Higress does not implement (e.g.,auth-type/auth-secret/auth-realm), retaining only truly supported annotations, and synchronizes mapping relationships inannotation-mapping.md.
Feature Value: Prevents users from misusing unsupported Nginx authentication annotations causing configuration failures or behavioral anomalies—improving documentation accuracy and migration reliability; helps developers quickly identify genuinely available Higress-native annotations, lowering migration cognitive load and debugging time. -
Related PR: #5054
Contributor: @dusk5-Surtr
Change Log: Corrects spelling errors in multiple plugin READMEs and code comments, including'Json Web Toke'→'Json Web Token','ture'→'true', etc., identified and fixed using the project’s built-incodespellchecker—no functional or behavioral changes involved.
Feature Value: Improves documentation professionalism and readability, avoiding user misunderstandings caused by typos—especially ensuring accuracy of key terms like Boolean values in configuration instructions, enhancing developer confidence in plugin functionality and correct usage. -
Related PR: #5036
Contributor: @sunxia0
Change Log: Synchronizes Chinese/English READMEs and official website guides for the MCP Server plugin, embedding complete configuration documentation (including protocol strategies, toolsets, REST tools, credential handling, proxy examples, andmcp-routersource links) directly into the plugin repository docs, removing website-specific metadata and standardizing whitespace.
Feature Value: Improves developer experience by enabling one-stop, authoritative configuration documentation access within the repository—eliminating need to navigate to the website for MCP Server plugin deployment and debugging, lowering entry barriers and enhancing doc maintainability and multilingual consistency. -
Related PR: #5030
Contributor: @Black-Break
Change Log: Corrects two critical errors in thewasm-goplugin README: thefrontend-grayplugin’s incorrect injection field name (should beinjection.body.first/last, notafter) and theip-restrictionplugin’s HTTP header name casing error (x-real-iP→x-real-ip), ensuring strict documentation–code alignment.
Feature Value: Prevents users from misconfiguring plugins due to referencing incorrect documentation, improving configuration accuracy and out-of-the-box experience; particularly, fixing theip-restrictionheader name prevents case-sensitive auth failures, enhancing production stability. -
Related PR: #4996
Contributor: @github-actions[bot]
Change Log: This PR adds bilingual release notes files (README.mdandREADME_ZH.md) for v2.2.5, contributing 1,678 lines covering categorized statistics of 133 updates, new features, bug fixes, refactoring, and documentation improvements—automatically generated by GitHub Actions.
Feature Value: Provides users with a structured, searchable overview of version changes, significantly improving version transparency and upgrade decision efficiency; bilingual support lowers understanding barriers for domestic and international users, enhancing community friendliness and product professionalism. -
Related PR: #4916
Contributor: @muzimu217
Change Log: Adds documentation for thesecurityTokenconfiguration option in the Englishai-security-guardplugin README, supporting Alibaba Cloud STS temporary credential authentication—already implemented in Chinese docs and code but omitted in English docs.
Feature Value: Enables English-speaking users to fully understand all configurable options of theai-security-guardplugin, preventing oversight of security token configuration due to documentation gaps—improving multilingual user adoption of the plugin’s security capabilities and trust. -
Related PR: #4915
Contributor: @muzimu217
Change Log: Corrects a field-name error in the Englishai-proxyplugin README for Vertex provider security configuration, replacing the nonexistent'vertexGeminiSafetySetting'with the code-actual and used'geminiSafetySetting'—ensuring doc–source alignment.
Feature Value: Prevents users from misconfiguring security settings due to doc-induced errors, improving configuration accuracy and debugging efficiency, and enhancing documentation credibility and developer experience. -
Related PR: #4781
Contributor: @muzimu217
Change Log: Corrects erroneous descriptions of theinjection.bodyconfiguration field in the Chinesefrontend-grayplugin README, replacing the invalid'after'field name with the code-supported'first'and'last'—ensuring strict doc–source alignment.
Feature Value: Prevents gray injection functionality failure due to misconfiguration based on incorrect documentation, improving configuration accuracy and debugging efficiency, reducing online issue risks from doc ambiguity, and enhancing plugin usability and maintainability. -
Related PR: #4140
Contributor: @yyyCode
Change Log: Corrects spelling errors across multiplewasm-goplugins (ai-proxy,cors,transformer) and MCP server configuration files (mcp-business-credit-rating), including'compatiable'→'compatible','explictly'→'explicitly','protocal'→'protocol','arbitary'→'arbitrary', and tool name'bussiness-credit-rating'→'business-credit-rating'.
Feature Value: Improves documentation and configuration accuracy and professionalism, avoiding user misinterpretation of configuration meanings or confusion in debug logs due to typos; correcting the tool name ensures correct MCP protocol identification, safeguarding plugin registration and invocation reliability—indirectly enhancing system maintainability and collaboration efficiency.
-
Related PR: #5329
Contributor: @johnlanni
Change Log: Fixes the plugin preparation validation workflow’s execution environment fromubuntu-latesttoubuntu-22.04to avoidonigurumacompilation failures caused by Ubuntu 26’s bundled GCC 15, ensuring Rust artifacts rebuild stably in CI.
Feature Value: Improves CI build stability and predictability, preventing unexpected compilation failures due to system toolchain upgrades—ensuring smooth plugin release pipelines and lowering maintainer effort spent troubleshooting non-functional build issues. -
Related PR: #5326
Contributor: @johnlanni
Change Log: Pins the plugin release preparation CI job toubuntu-22.04, avoiding build failures caused byubuntu-latestupgrading to Ubuntu 26 and GCC 15’s incompatibility withonigurumaC source; only adjusts thepreparejob environment, leaving Wasm build containers unaffected.
Feature Value: Ensures stable and reliable plugin release processes, preventing compilation interruptions caused by system environment changes; guarantees users consistently receive fully tested plugin release candidates—enhancing delivery quality and trustworthiness. -
Related PR: #5322
Contributor: @johnlanni
Change Log: Adds end-to-end SRDS scaling regression protection tests: creates 200/400 Ingress resources in stages and measures latency for new Ingresses to become effective, validating gateway route-propagation performance stability—supported by CI workflows and configurable threshold validation.
Feature Value: Guarantees timely route activation during Ingress scale growth, preventing performance regressions from impacting business rollout speed; provides quantifiable SLA assurance capabilities for large-scale Ingress scenarios—enhancing production stability and operational observability. -
Related PR: #5320
Contributor: @johnlanni
Change Log: Adds a manually triggered CI workflow supporting appending additional tags to published plugin images in public registries, reusing existing registry configurations with dry-run and overwrite control—improving version-release flexibility.
Feature Value: Enables maintainers to rapidly patch or supplement plugin image tags (e.g., retroactively applying semantic-version tags) without rebuilding and repushing images—shortening incident response time and enhancing version-management reliability and operational efficiency. -
Related PR: #5286
Contributor: @johnlanni
Change Log: Adds regression tests for HTTP/2 DATA frame body handling, covering multi-frame, empty-frame, and end-of-stream body parsing logic inext-authandhmac-auth-apisixplugins—usingx/net/http2to parse real H2 frames and drive host simulators to execute plugin callbacks, improving test determinism in protocol-boundary scenarios.
Feature Value: Strengthens HTTP/2 protocol compatibility assurance, proactively capturing body-processing defects in edge cases like DATA frame fragmentation and empty frames—reducing production risks of authentication failures or data truncation from H2 streaming-body parsing anomalies and improving gateway stability/reliability in high-concurrency microservice H2 communication. -
Related PR: #5239
Contributor: @johnlanni
Change Log: Replaces shortened 7-character commit SHAs referenced in GitHub Actionstranslatesteps with full 40-character SHAs, fixing persistenttranslatestep failures caused by GitHub’s lack of support for short SHA resolution—ensuring stable execution of multilingual content translation in CI.
Feature Value: Fixes stability issues in the PR merge pipeline’s translation step, preventing CI failures due to action-reference invalidation—improving feedback reliability for developers submitting PRs and automation workflow success rates, ensuring continuous availability of documentation internationalization. -
Related PR: #5211
Contributor: @johnlanni
Change Log: Enhances the resilience of the content translation workflow against upstream API instability by pinning GitHub Action commit hashes, enablingcontinue-on-errorfor thetranslatestep, and optimizing error-handling logic—reducing CI failures caused by intermittent external service rejections (e.g., long Chinese texts).
Feature Value: Improves CI workflow stability and reliability, avoiding false negatives from transient upstream translation API rejections—reducing developer wait times for retries and accelerating PR review and merge efficiency, improving collaboration experience.
- 🚀 New Features: 2
- 🐛 Bug Fixes: 49
- ♻️ Refactoring & Optimizations: 8
- 📚 Documentation Updates: 10
- 🧪 Test Improvements: 7
Total: 76 changes
Thanks to all contributors for their hard work! 🎉
This release includes 19 updates, covering feature enhancements, bug fixes, performance optimizations, and more.
- New Features: 8
- Bug Fixes: 9
- Documentation Updates: 2
-
Related PR: #622
Contributor: @CH3CHO
Change Log: Switched the base image in the backend Dockerfile from the deprecatedopenjdk:21-jdk-slimto the officially recommendedeclipse-temurin:21-jdk, modifying only theFROMinstruction to ensure continued security updates and long-term support for the JDK runtime environment.
Feature Value: Enhances container image security and maintainability, preventing build failures or vulnerability risks caused by deprecation of theopenjdkimage repository; users benefit from a more stable and compliant Java runtime environment without any code changes. -
Related PR: #621
Contributor: @Thomas-Eliot
Change Log: Enhanced MCP Server interaction capabilities, including automaticHostheader rewriting for DNS backends, transport protocol selection, full path replacement, and correct parsing of the special character@in DSN strings under database (DB) scenarios; introduced newDirectRouteand DB configuration classes along with related constants.
Feature Value: Improves flexibility and compatibility when integrating MCP Servers, reduces user configuration complexity, prevents path ambiguity and DSN parsing errors, enabling developers to integrate diverse MCP services more stably and conveniently—thus strengthening platform extensibility and usability. -
Related PR: #608
Contributor: @Libres-coder
Change Log: Added plugin display functionality to the AI route management page, supporting expansion to view enabled plugins and displaying an "Enabled" label in the configuration panel; extendedroute.tsxandPluginListcomponent logic, integrated i18n internationalization support, and adapted plugin query logic for AI route types.
Feature Value: Users can intuitively view and verify enabled plugins directly within the AI route management interface—consistent with the experience for standard routes—enhancing transparency and maintainability of AI route configurations, reducing misconfiguration risks, and improving platform consistency and operational uniformity. -
Related PR: #604
Contributor: @CH3CHO
Change Log: Added support for regular-expression-based path rewriting via thehigress.io/rewrite-targetannotation; extended Kubernetes constant definitions and route configuration transformation logic, and added corresponding unit test cases as well as internationalized frontend and backend copy.
Feature Value: Enables users to flexibly define path rewrite rules using regular expressions, improving routing accuracy and flexibility—ideal for complex URL transformation scenarios—and significantly enhancing the gateway’s adaptability in microservice and API governance contexts. -
Related PR: #603
Contributor: @CH3CHO
Change Log: Defined the constantSTATIC_SERVICE_PORT = 80in the static service source form component and explicitly displayed this fixed port in the UI, making it clear to users that static services default to port 80—improving configuration transparency and predictability.
Feature Value: Users configuring static service sources can clearly see the preset port 80, reducing configuration errors caused by port-related misunderstandings, boosting operational efficiency and deployment success rates—especially beneficial for newcomers rapidly grasping service binding logic. -
Related PR: #602
Contributor: @CH3CHO
Change Log: Added search functionality to the upstream service selection component for AI routes, enhancing input interaction logic in theRouteFormcomponent to support dynamic filtering and rapid targeting of desired services, thereby improving configuration efficiency.
Feature Value: Users configuring AI routes can perform real-time searches for upstream services, eliminating the need to manually scroll through lengthy service lists—significantly shortening configuration time and lowering the probability of incorrect selections—enhancing platform usability and operational efficiency. -
Related PR: #566
Contributor: @OuterCyrex
Change Log: Added support for Tongyi Qwen (Qwen), a large language model service, including custom service configuration, internet search enablement, and file ID upload; introduced Qwen-specific handler classes, frontend multilingual translation entries, and a dedicated Provider configuration form component.
Feature Value: Empowers users to flexibly integrate self-hosted or privately deployed Qwen services, supporting advanced capabilities such as internet-connected search and file-context injection—enhancing the AI gateway’s compatibility with domestic large language models and its enterprise customization capability. -
Related PR: #552
Contributor: @lcfang
Change Log: Introduced theVPort(virtual port) attribute, extending registration center configuration capabilities in MCP Bridge; added thevportfield inServiceSource, and implementedvportparsing and propagation in both the Kubernetes model transformer and CRD definition—ensuring routing compatibility when service instance ports vary across environments.
Feature Value: Resolves routing failures caused by dynamically changing backend ports in registration centers (e.g., Eureka/Nacos); users can configure a unified virtual port (vport) to guarantee routing stability and cross-environment deployment compatibility—reducing operational configuration complexity.
-
Related PR: #620
Contributor: @CH3CHO
Change Log: Fixed a typographical error in thesortWasmPluginMatchRuleslogic—correcting misspelled variable names or conditional expressions—to ensure proper execution of WASM plugin match rule sorting and prevent potential null pointer exceptions or logic inconsistencies caused by naming errors.
Feature Value: Enhances the stability and reliability of WASM plugin match rule sorting, preventing runtime exceptions or erroneous rule ordering due to coding typos—ensuring that users’ custom WASM plugin policies take effect as intended and strengthening overall system robustness. -
Related PR: #619
Contributor: @CH3CHO
Change Log: Fixed duplicate version information persistence when convertingAiRoutetoConfigMap—removed theversionfield from thedataJSON payload to avoid conflicts with the version information embedded in theConfigMapmetadata—ensuring configuration consistency.
Feature Value: Improves the accuracy and reliability of Kubernetes resource configuration, preventing parsing anomalies or deployment failures caused by redundant version fields—makingAiRoute-based configuration management more stable and predictable. -
Related PR: #618
Contributor: @CH3CHO
Change Log: Refactored API authentication logic inSystemController, introducing the@AllowAnonymousannotation to explicitly mark endpoints requiring no authentication, and explicitly declaring exempt permissions in multiple controllers (e.g.,Healthz,Landing,Session) to eliminate unauthorized access security vulnerabilities stemming from default authentication policies.
Feature Value: Fixes an authentication bypass security vulnerability in system controllers, preventing unauthenticated users from accessing sensitive interfaces—significantly improving platform security and compliance—and safeguarding user data and system resources against unauthorized access or abuse. -
Related PR: #617
Contributor: @CH3CHO
Change Log: Fixed React warnings during frontend list rendering caused by missing uniquekeyprops; corrected the type of theConsumer.namefield (changed frombooleantostring); optimized image loading strategies to comply with Content Security Policy (CSP).
Feature Value: Enhances frontend application stability and user experience—eliminating console errors that interfere with development debugging, fixing type mismatches that could cause runtime exceptions, and resolving image loading failures to ensure UI elements render correctly. -
Related PR: #614
Contributor: @lc0138
Change Log: Fixed the type definition issue for thetypefield (indicating service origin) in theServiceSourceclass, adding dictionary-value validation logic to allow only legitimate registry types—preventing runtime type errors and illegal data writes.
Feature Value: Strengthens the robustness and security of service origin configuration—preventing service discovery failures or system anomalies caused by invalidtypevalues—and ensures configuration reliability and stability in multi-registry environments. -
Related PR: #613
Contributor: @lc0138
Change Log: Fixed the missing Content Security Policy (CSP) configuration on the frontend by adding the appropriate<meta>tag and related security headers indocument.tsx, mitigating client-side injection attacks such as XSS and enhancing overall application security.
Feature Value: Effectively mitigates cross-site scripting (XSS) and other security risks arising from incomplete CSP enforcement on the frontend—strengthening the security of user data and UI interactions, reducing the likelihood of malicious script execution, and improving system compliance and trustworthiness. -
Related PR: #612
Contributor: @zhwaaaaaa
Change Log: Added logic inDashboardServiceImplto ignore hop-to-hop headers (e.g.,transfer-encoding) per RFC 2616 Section 13.5.1, preventing reverse proxy forwarding of thetransfer-encoding: chunkedheader—which previously caused Grafana dashboard pages to fail loading.
Feature Value: Fixes the issue where Grafana dashboard pages failed to load due to reverse proxy passthrough of thetransfer-encoding: chunkedheader—improving console stability and user experience, and ensuring reliable operation of monitoring dashboards. -
Related PR: #609
Contributor: @CH3CHO
Change Log: Fixed a type error in theConsumerinterface’snamefield—correcting it frombooleantostring—to align the frontend data structure with actual backend response values and prevent runtime errors or type-checking failures caused by type mismatches.
Feature Value: Improves type safety and code robustness—preventing UI rendering anomalies, form submission failures, or TypeScript compilation errors resulting from an incorrectly typednamefield—and ensures accurate display and interaction with consumer information. -
Related PR: #605
Contributor: @SaladDay
Change Log: Refined the regular expression validation rule for AI route names—adding support for the dot (.) character while restricting alphabetic characters to lowercase only (a-z); updated both Chinese and English error messages to match the revised validation logic—ensuring UI prompts accurately reflect actual validation behavior.
Feature Value: Resolves issues where users were incorrectly blocked from creating AI routes containing dots in their names—enhancing form validation accuracy and UI consistency; prevents configuration failures caused by misleading error messages—strengthening system robustness and usability.
-
Related PR: #611
Contributor: @qshuai
Change Log: Fixed an inaccurate summary description in the OpenAPI documentation for the@PostMappingendpoint inLlmProvidersController, correcting the erroneous “Add a new route” text to a description aligned with the endpoint’s actual function—ensuring API documentation accuracy.
Feature Value: Improves API documentation accuracy and readability, helping developers correctly understand the endpoint’s purpose (LLM provider management) and avoid integration errors due to misleading descriptions—enhancing the usability and professionalism of the console’s API. -
Related PR: #610
Contributor: @heimanba
Change Log: Updated thefrontend-grayplugin documentation to mark therewrite,backendVersion, andenabledfields as optional; updated therules.namepath reference tograyDeployments[].name; and synchronized field descriptions and terminology in both Chinese and EnglishREADMEfiles andspec.yaml—improving documentation accuracy and configuration flexibility.
Feature Value: Grants users greater configuration flexibility and lowers the barrier to adoption; corrects field association descriptions and ensures consistent terminology—avoiding configuration misunderstandings or deployment failures caused by documentation inaccuracies—and enhances developer experience and plugin reliability.
- 🚀 New Features: 8
- 🐛 Bug Fixes: 9
- 📚 Documentation Updates: 2
Total: 19 changes
Thank you to all contributors for your hard work! 🎉
- Console: existing sessions are invalidated once after upgrade; users must sign in again. Default limits are 30 minutes idle / 8 hours absolute and can be disabled with
0. Basic auth is disabled by default. LLM provider keys are returned only at creation time; duplicate creates return 409. - mcp-e2bdev:
execute_code_sandboxwas removed. The MCP server now only creates and kills sandboxes. - REST-to-MCP: path arguments are escaped before being placed into the request URL. Path values containing
/, dot segments,?/#or pre-encoded data need migration, or the explicit unsafe compatibility switch. - Envoy: the data plane is upgraded to 1.36.12 through the proxy v2.2.6 packages.
Experimental browser SDK d9464c001e4ab5a17b8dac566e4f7ab25c2bcb0b
Experimental browser SDK from master. Optimized and ASan browser validation passed. Validation: https://github.com/fluent/fluent-bit/actions/runs/42638577545 Download the archive, verify its checksum, and deploy the complete SDK on your application origin. HTTPS and COOP/COEP are required. This is not a production support promise.
3.2.58
This patch release saw fixes is multiple areas done by multiple contributors, in the specific fixes in LIKE operator and remote spatial done by @mvanhorn, fixes in use of spatial index in functions done by @sblommers, the rest done by the maintainers, following the list of changes
- Fix like operator to match in the wildcard also new line terminators #10895
- Use spacial index in equality operations, issue #10893
- Avoid to encode document to spatial types in remote client, issue #10929
- Make sure to drop cached sync backup in case of error like out of disk space, issue #10987
orientdb-community-3.2.58.tar.gz orientdb-community-3.2.58.zip
v1.56.2 🐫
Meilisearch v1.56.2 removes a leftover debug statement that could impede performance and was a regression from v1.56.1. Upgrading from previous versions of Meilisearch is strongly recommended.
It also updates several dependencies.
- remove unwanted log & warn about future unwanted dbg by @dureuill in https://github.com/meilisearch/meilisearch/pull/6725
- Bump docker/build-push-action from 6.19.2 to 7.4.0 by @dependabot[bot] in https://github.com/meilisearch/meilisearch/pull/6712
- Bump docker/login-action from 4.2.0 to 4.7.0 by @dependabot[bot] in https://github.com/meilisearch/meilisearch/pull/6714
- Fix outdated CA certificates in the Docker images by @curquiza in https://github.com/meilisearch/meilisearch/pull/6705
- Bump actions/download-artifact from 8.0.1 to 8.0.2 by @dependabot[bot] in https://github.com/meilisearch/meilisearch/pull/6713
- Bump dart-lang/setup-dart from 1.7.2 to 1.8.1 by @dependabot[bot] in https://github.com/meilisearch/meilisearch/pull/6711
- Bump mongodb to v9.0 in rails SDKs tests by @Strift in https://github.com/meilisearch/meilisearch/pull/6716
Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.56.1...v1.56.2
Experimental browser SDK 8590ef6a819e36b84ee14ae325f46ea10b3ef852
Experimental browser SDK from master. Optimized and ASan browser validation passed. Validation: https://github.com/fluent/fluent-bit/actions/runs/42575727358 Download the archive, verify its checksum, and deploy the complete SDK on your application origin. HTTPS and COOP/COEP are required. This is not a production support promise.
Fluent Bit 5.2.0
https://fluentbit.io/announcements/v5.2.0/
- workflows: bump github/codeql-action/upload-sarif from 4.38.3 to 4.39.0 by @dependabot[bot] in https://github.com/fluent/fluent-bit/pull/12607
- workflows: bump reviewdog/action-actionlint from 1.80.1 to 1.80.4 by @dependabot[bot] in https://github.com/fluent/fluent-bit/pull/12619
- motd: update banner to v5.2 by @edsiper in https://github.com/fluent/fluent-bit/pull/12627
- release: prepare master for v5.2.0 development by @edsiper in https://github.com/fluent/fluent-bit/pull/12625
- workflows: prepare release routing for v5.2 by @edsiper in https://github.com/fluent/fluent-bit/pull/12626
- workflows: verify and set release PR base branches by @edsiper in https://github.com/fluent/fluent-bit/pull/12629
- lib: upgrade bundled jemalloc to 5.4.0 by @edsiper in https://github.com/fluent/fluent-bit/pull/12493
- lib: upgrade LuaJIT and fix CMake wrapper compatibility by @edsiper in https://github.com/fluent/fluent-bit/pull/12503
- lib: fix jemalloc header detection on older compilers by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12634
- lib: cfl: upgrade to v1.1.0 by @edsiper in https://github.com/fluent/fluent-bit/pull/12630
- lib: ctraces: upgrade to v0.8.0 by @edsiper in https://github.com/fluent/fluent-bit/pull/12637
- lib: cmetrics: upgrade to v2.3.1 by @edsiper in https://github.com/fluent/fluent-bit/pull/12641
- in_tail: mitigate access violation on windows by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12642
- processor_fts: add Fluent Typed Scripting processor by @edsiper in https://github.com/fluent/fluent-bit/pull/12589
- wasm: add experimental browser runtime and SDK by @edsiper in https://github.com/fluent/fluent-bit/pull/12429
- upstream: network: mitigate tcp dns timeouts by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12644
- wasm: enable Fluent Typed Scripting in browser artifacts by @edsiper in https://github.com/fluent/fluent-bit/pull/12645
- tests: integration: cover processor worker isolation after FTS by @edsiper in https://github.com/fluent/fluent-bit/pull/12511
- processor_sql: preserve resource and scope groups when filtering logs by @edsiper in https://github.com/fluent/fluent-bit/pull/12506
- processor: fuse compatible body content modifier chains by @edsiper in https://github.com/fluent/fluent-bit/pull/12505
- lib: Import fluent/onigmo change by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12669
- workflows: enable unit tests for 5.1 pull requests by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12674
- in_opentelemetry: process eligible logs in HTTP workers by @edsiper in https://github.com/fluent/fluent-bit/pull/12673
- lib: chunkio: upgrade to v1.5.5 by @edsiper in https://github.com/fluent/fluent-bit/pull/12699
- lib: yyjson: upgrade to v0.13.0 by @edsiper in https://github.com/fluent/fluent-bit/pull/12698
- lib: restore jemalloc 5.3.0 memory baseline by @edsiper in https://github.com/fluent/fluent-bit/pull/12701
- ci: fix macOS shutdown, test fixtures, and browser teardown by @edsiper in https://github.com/fluent/fluent-bit/pull/12702
- build: parallelize library builds and reuse core objects by @edsiper in https://github.com/fluent/fluent-bit/pull/12706
- processor_journald_otel: handle journald as otel processed logs by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12387
- in_forward: Added a small protection to secure Forward with a preflight scanner by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12686
- tests: parallelize six runtime suites by @edsiper in https://github.com/fluent/fluent-bit/pull/12707
- build: libyaml: find libyaml without pkg-config by @edsiper in https://github.com/fluent/fluent-bit/pull/12708
- build: upgrade SQLite to 3.54.1 and parallelize compilation by @edsiper in https://github.com/fluent/fluent-bit/pull/12716
- build: correct generated dependency include paths by @edsiper in https://github.com/fluent/fluent-bit/pull/12719
- wasm: filter_wasm: pack value len pair for returned format of wasm by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12518
- out_opentelemetry: respect dropped count metadata boundaries by @edsiper in https://github.com/fluent/fluent-bit/pull/12507
- http_server: suppress HEAD bodies and preserve HTTP/2 trailers by @edsiper in https://github.com/fluent/fluent-bit/pull/12727
- processor_fts: add reusable typed policy packs by @edsiper in https://github.com/fluent/fluent-bit/pull/12731
- processor_fts: add JSON field decoding and log body unpacking by @edsiper in https://github.com/fluent/fluent-bit/pull/12732
- out_forward: preserve log groups with dynamic tags by @edsiper in https://github.com/fluent/fluent-bit/pull/12728
- out_vivo_exporter: fix telemetry loss and add compressed OTLP JSON by @edsiper in https://github.com/fluent/fluent-bit/pull/12418
- processor_fts: add LuaLS definitions and JSON API export by @edsiper in https://github.com/fluent/fluent-bit/pull/12733
- bin: generate YAML configuration from CLI options by @edsiper in https://github.com/fluent/fluent-bit/pull/12353
- wasm: add local pipeline drain and reduce browser run latency by @edsiper in https://github.com/fluent/fluent-bit/pull/12730
- workflows: publish validated experimental browser SDK releases by @edsiper in https://github.com/fluent/fluent-bit/pull/12717
- fix(in_statsd): add missing break in STATSD_TYPE_TIMER case by @AruneshDwivedi in https://github.com/fluent/fluent-bit/pull/12494
- out_stackdriver: mitigate oob on stack driver by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12743
- out_chronicle: fix chronicle initialization leaks by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12736
- http_server: keep cached metrics when a push overlaps a read by @locker95 in https://github.com/fluent/fluent-bit/pull/12684
- aws: Mitigate the AWS credential URI bypass by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12620
- in_syslog: mitigate potential overflow on payloads by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12584
- tests: fix HTTP JSON stream runtime assertions by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12582
- packaging: distros: almalinux: rockeylinux: centos: update requested packages by @sxd in https://github.com/fluent/fluent-bit/pull/12711
- oauth2_jwt: in_http: in_opentelemetry: Implement configurable OAuth2 jwks buffer size and its limit by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12694
- regex: mitigate regex unlimited stacks by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12734
- filter_rewrite_tag: fix emitter lifecycle and record preservation by @edsiper in https://github.com/fluent/fluent-bit/pull/12668
- out_file: Mitigated the File output cardinality gap by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12676
- out_file: out_nats: Sanitize malicious tags by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12587
- upstream: out_s3: out_azure_blob: out_gcs: out_stackdriver: mitigate unexpectedly using plaintext payload on https scheme by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12622
- in_forward: in_syslog: in_unix_socket: harden unix input sockets by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12703
- socket: config: input: engine: Fix channel descriptor initialization and cleanup for descriptors by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12720
- http_client: out_opentelemetry: mitigate unbounded http ng requests by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12665
- in_prometheus_textfile: append multiple contexts of prometheus texts payloads by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12576
- out_kafka: avro: revise kafka schema validation by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12738
- http_server: mitigate fragmented HTTP/1 header reparsing with configurable limits by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12718
- in_node_exporter_metrics: add scrape_on_start option by @stondo in https://github.com/fluent/fluent-bit/pull/12638
- tls: propagate verify_hostname settings on tls context by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12635
- tests: integeration: config_format: address newer python failures and windows failures on integration tests by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12677
- utils: plugins: Implemented the path-shadowing mitigation for shadowed relative files by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12682
- output: engine: output_throttle: Implement throttle operations for output plugins by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12393
- output: mitigate heavy loaded case by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12484
- http_server: in_opentelemetry: plug decompress explosion possibilities by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12568
- filter_rewrite_tag: add opt-in input processor batching and supporting fixes by @edsiper in https://github.com/fluent/fluent-bit/pull/12697
- http_server: mitigate automatic inflation bypass by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12581
- out_azure_blob, out_azure_kusto: fix buffered memory safety by @edsiper in https://github.com/fluent/fluent-bit/pull/12748
- in_opentelemetry: bound OTLP decoding allocations by @cosmo0920 in https://github.com/fluent/fluent-bit/pull/12705
- workflows: allow package reads in master integration tests by @edsiper in https://github.com/fluent/fluent-bit/pull/12749
- pipe, engine, processor_fts, tests: fix 5.2 release blockers by @edsiper in https://github.com/fluent/fluent-bit/pull/12750
- oauth2_jwt: enforce JWKS connection and response deadlines by @edsiper in https://github.com/fluent/fluent-bit/pull/12752
- filter_record_modifier: drop batches when all fields are removed by @edsiper in https://github.com/fluent/fluent-bit/pull/12753
- filter_modify: reject rules with excess arguments by @edsiper in https://github.com/fluent/fluent-bit/pull/12754
- documentation: fts: fix timestamp missing policy example by @edsiper in https://github.com/fluent/fluent-bit/pull/12756
- filter_lua: isolate protected callback errors to the failing record by @edsiper in https://github.com/fluent/fluent-bit/pull/12755
- input: fix collector crashes and 5.2 release regressions by @edsiper in https://github.com/fluent/fluent-bit/pull/12758
- @AruneshDwivedi made their first contribution in https://github.com/fluent/fluent-bit/pull/12494
- @locker95 made their first contribution in https://github.com/fluent/fluent-bit/pull/12684
Full Changelog: https://github.com/fluent/fluent-bit/compare/v5.1.5...v5.2.0
Experimental browser SDK e0149076aeff009d35fd495e55379cb78f1eb53f
Experimental browser SDK from master. Optimized and ASan browser validation passed. Validation: https://github.com/fluent/fluent-bit/actions/runs/42546763161 Download the archive, verify its checksum, and deploy the complete SDK on your application origin. HTTPS and COOP/COEP are required. This is not a production support promise.
4.53
- fix(s3tables,s3vectors): bind DeleteNamespace and the vector bucket cleanup to the authorized records by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12331
- filer: allow renaming into a sibling that shares the name prefix by @fazpu in https://github.com/seaweedfs/seaweedfs/pull/12337
- compression: compress JSON uploads, and match file types by extension by @patwhite in https://github.com/seaweedfs/seaweedfs/pull/12339
- filer: reuse IsEqualOrUnder for the rename subdirectory check by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12338
- s3vectors: support TagResource, UntagResource and ListTagsForResource by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12335
- volume: replicas keep the primary's compression and metadata by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12350
- admin: manage S3 vector buckets by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12334
- admin: configurable file browser upload size limit by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12348
- build(deps): bump go.etcd.io/etcd/client/pkg/v3 from 3.7.1 to 3.7.3 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/12344
- build(deps): bump actions/setup-python from 5 to 7 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/12345
- build(deps): bump google.golang.org/api from 0.297.0 to 0.310.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/12343
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/sts from 1.51.1 to 1.51.6 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/12346
- build(deps): bump github.com/peterh/liner from 1.2.2 to 1.2.3 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/12341
- build(deps): bump actions/setup-go from 5 to 7 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/12347
- s3vectors: support tag conditions in vector bucket policies by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12351
- build(deps): bump cloud.google.com/go/kms from 1.35.0 to 1.36.1 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/12342
- operation: pad the marginal gzip test past Go 1.26's stored block by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12352
- filer: say jwt.filer_signing.key gates only the IAM gRPC service by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12353
- fix(s3api): reject an invalid storage class before uploading the body by @omninguyen in https://github.com/seaweedfs/seaweedfs/pull/12354
- s3api: known-answer fixture generator for SSE-S3 and filer-encrypted chunks by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12355
- test/s3vectors: a hardened cluster with TLS volume servers, read JWTs and encrypted chunks by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12356
- admin: summarize the EC delete_count accounting warning per refresh by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12359
- admin: scope plugin job and activity fetches to the selected job type by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12360
- fix(fsck): inspect references to deleted volumes by @Neo1228 in https://github.com/seaweedfs/seaweedfs/pull/12357
- shell: keep fs.mergeVolumes and fs.distributeChunks from reverting entries written while they run by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12362
- fix(storage): update deletion metrics in SortedFileNeedleMap.Delete (#12363) by @Tyagiquamar in https://github.com/seaweedfs/seaweedfs/pull/12364
- rust volume: count sorted-map files and deletes the way Go does by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12365
- filer.sync: skip a rewritten source version regardless of its mtime order by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12366
- filer.sync: stop chunk retries with the same supersession check the skip uses by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12367
- rust volume: exit cleanly on SIGTERM, and make the harness notice when a server does not by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12370
- rust volume: run each gRPC TLS handshake on its own task by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12372
- filer UI, admin: upload a folder by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12371
- weed-vector: gRPC TLS to the masters and for the gateway by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12368
- admin: fail an in-flight detection when its worker disconnects by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12376
- weed-vector: check master certificates against the server allowlists, read -config_dir by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12374
- topology: refresh EC file and delete counts from heartbeats by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12378
- admin: let a buffered detection completion win over the stream closing by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12379
- test/s3vectors: wait for the S3 port before handing out the cluster by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12383
- weed-worker: find jwt.filer_signing.key where the Go worker does, and let the chart deliver it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12373
- volume: a read plan waits for a vacuum commit instead of answering 404 by @pingqiu in https://github.com/seaweedfs/seaweedfs/pull/12375
- s3api: per-bucket Block Public Access (BlockPublicAcls, IgnorePublicAcls) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12381
- remote.uncache, remote.meta.sync, remote.cache: keep local writes that land while they run by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12382
- admin: count executor slots per job type and stop lanes waiting on capacity they cannot free by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12384
- admin: credit an unitemized slot to a pending job only after a later heartbeat by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12385
- master: tell a warming-up Assign or LookupVolume client when warm-up ends by @pingqiu in https://github.com/seaweedfs/seaweedfs/pull/12386
- filer: clear a dead test replica's reachability record before closing it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12387
- seaweed-vector: record seaweed-worker-core's toml dependency in Cargo.lock by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12388
- s3: keep service account keys when a pushed identity replaces its parent by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12394
- plugin worker: stop forwarding the stream's admin token to job RPCs by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12391
- fix(s3tables): validate policy conditions and fail safe on unusable ones by @omninguyen in https://github.com/seaweedfs/seaweedfs/pull/12389
- volume: count EC intervals served by reconstruction by @pingqiu in https://github.com/seaweedfs/seaweedfs/pull/12392
- grafana: chart EC reconstruction and other unplotted metrics by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12406
- ec: rebuild a needle when other shards are corrupt over its range by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12401
- fix(s3): accept fresh admin tokens when context carries stale authorization (#12390) by @Tyagiquamar in https://github.com/seaweedfs/seaweedfs/pull/12397
- s3: reject POST Object header fields with control characters by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12400
- s3: expose ReadAcp/WriteAcp in shell and admin UI, log ACL-upload denials by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12396
- volume: report EC file and delete counts in incremental shard messages by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12404
- admin/plugin: fail a dispatch its restarted worker no longer lists by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12402
- admin: regenerate the plugin pages' templ output from weed/admin by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12405
- seaweed-vector: dev plan for ANN search over S3 Vectors indexes by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12408
- seaweed-vector: build a vector index from the CLI and measure it in the perf suite (ANN phase 0) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12411
- seaweed-vector: probe policy for indexed queries (ANN phase 1) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12412
- weed-worker: build the vector index of S3 Vectors tables past a row threshold (ANN phase 2) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12413
- weed-worker: keep a vector index covering as its table grows (ANN phase 3) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12414
- s3vectors test: skip a query lease tag released between list and HEAD by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12409
- seaweed-volume: run the preallocating max-volume test on a fake disk by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12423
- seaweed-volume: stage optional EC sidecar copies before replacing by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12403
- ec.rebuild: repair shards that fail a checksum scrub in complete volumes by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12410
- volume: redial a master that just dropped a registered stream after a second by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12420
- volume: bound each FetchAndWriteNeedle replica write by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12415
- s3api: answer success when a failed completion already committed by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12416
- volume: bound each replica forward so a silent peer cannot hold a write by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12417
- filer.remote.sync: stop a touched file from being restamped forever by @impuls42 in https://github.com/seaweedfs/seaweedfs/pull/12419
- weed/shell: resolve collection from topology when ec.decode is given only volumeId by @Tyagiquamar in https://github.com/seaweedfs/seaweedfs/pull/12424
- admin: make the cluster lock's fairness window configurable by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12426
- weed/command: skip remote bucket delete when bucket is unmounted (#12418) by @Tyagiquamar in https://github.com/seaweedfs/seaweedfs/pull/12425
- weed/server: verify data shards against bitrot sidecar before ec decode (#12422) by @Tyagiquamar in https://github.com/seaweedfs/seaweedfs/pull/12427
- filer: hide write controls in the UI on the read-only port by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12429
- admin: re-send the master vacuum disable every poll so it survives leader changes by @kpei in https://github.com/seaweedfs/seaweedfs/pull/12430
- s3api: apply copy bucket-default SSE after the ACL re-auth by @stefan-wisbric in https://github.com/seaweedfs/seaweedfs/pull/12436
- s3: commit the delete marker in the owner's finalize transaction by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12432
- s3: require their own actions to change a bucket's CORS or versioning by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12433
- s3api: speed up recursive listing of branched directory trees by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12438
- master: export Hashicorp raft metrics through the go-metrics global raft uses by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12448
- fix(s3tables): route REST RenameTable and refuse unrouted S3 Tables requests by @omninguyen in https://github.com/seaweedfs/seaweedfs/pull/12446
- volume: a delete cancels writes of its needle still in flight by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12445
- filer.remote.sync: bounded filer lookups, one chunk cache per process by @jsas in https://github.com/seaweedfs/seaweedfs/pull/12441
- filer.remote.sync: bound the stamp and offset writes, startup offset fixes, stamp a copy by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12447
- volume: stop serving EC reads from quarantined shards by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12450
- s3 lifecycle: walker deletes carry the listed identity and must target the latest version by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12452
- filer: release metadata log chunks a failed append leaves unreferenced by @MorezMartin in https://github.com/seaweedfs/seaweedfs/pull/12455
- s3api: mint a versioned PUT's id at commit, after the lock wait and the upload by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12454
- filer: no lazy remote fetch inside a store transaction by @jsas in https://github.com/seaweedfs/seaweedfs/pull/12439
- filer: a full remote-deletion tombstone table keeps the lazy fetch off by @jsas in https://github.com/seaweedfs/seaweedfs/pull/12440
- filer.meta.backup: stream from the start of an unfinished walk by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12458
- filer.remote.gateway: keep the remote object while a version under a delete marker is locked by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12459
- filer: fold small chunks into manifests 256 at a time by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12462
- master: stop the resumed single-master leader from checking quorum every 1 ms by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12463
- grafana: chart the remote-deletion tombstone gauges by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12444
- mount: keep retrying writeback chunk uploads through a volume outage by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12465
- admin: show disk usage on the dashboard instead of the data size by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12466
- S3 Vectors: the gateway resolves the table it sends to weed-vector by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12468
- S3 Vectors: weed-vector reads tables from the filers and volume servers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12469
- s3tables, iceberg: one catalog record per table location by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12473
- filer.remote.sync: skip pre-mount mount-table versions, decide the unmount before admitting later events by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12472
- S3 Vectors: weed-vector, weed-worker and the CLI write tables to the filers and volume servers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12470
- volume: check a needle's CRC the first time a range of it is read by @jrcichra in https://github.com/seaweedfs/seaweedfs/pull/12467
- fix(iceberg): keep a losing table create from deleting the winner's metadata by @omninguyen in https://github.com/seaweedfs/seaweedfs/pull/12474
- ec_balance: drain a server holding far more shards than its siblings by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12477
- filer.remote.sync: -allMounts writes back every mounted directory from one process by @jatorre in https://github.com/seaweedfs/seaweedfs/pull/12476
- ec_balance: make the per-rack cap on global moves a worker setting by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12478
- s3tables, iceberg: give tables created without a location their own directory by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12475
- Retry transient failures in star history generation by @chrislusf with @Copilot in https://github.com/seaweedfs/seaweedfs/pull/12479
- volume.fsck: batch and deduplicate filer entry deletions by @Tyagiquamar in https://github.com/seaweedfs/seaweedfs/pull/12480
- s3: don't report a version delete as done when the filer lookup failed by @mansur-akhmadi in https://github.com/seaweedfs/seaweedfs/pull/12482
- S3 Vectors: refuse an SSE-S3 index when the engine has no key for it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12484
- S3 Vectors: weed-vector drops the ignored --namespace and --filer-signing-key by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12485
- S3 Vectors: help text for weed-vector, weed-vector-cli and weed-worker by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12486
- Volume encryption follows the filer: weed s3, weed-vector, weed-worker, weed-vector-cli by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12487
- helm: say what the Lance worker needs from security.toml by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12489
- shell: include collection names when topology statistics are unavailable by @pingqiu in https://github.com/seaweedfs/seaweedfs/pull/12490
- shell: test collection.list keeps live statistics next to offline names by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12492
- master: keep a re-registered filer in the lock ring when its old stream ends by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12494
- @fazpu made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/12337
- @Neo1228 made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/12357
- @kpei made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/12430
- @stefan-wisbric made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/12436
- @mansur-akhmadi made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/12482
Full Changelog: https://github.com/seaweedfs/seaweedfs/compare/4.52...4.53