Releases: weaviate/weaviate
Release list
v1.38.9 - Backup chunk integrity, usage module and async replication fixes
Breaking Changes
none
New Features
none
Fixes
- fix(usage): skip collection tick while previous report is still running by @antas-marcin in #12139
- Dont read file sizes in usage module when not needed by @dirkkul in #12418
- fix(hnsw): cancel and drain the cache prefill before teardown by @moogacs in #12408
- flat: fix 'quantizer not initialized' search error during RQ lazy initialization by @asdine in #12419
- perf(hnsw): parallelize Muvera late-interaction rescoring by @etiennedi in #10536
- Don't hold the DB index lock across a verbose node-status scan by @dirkkul in #12375
- Reduce allocations in tenant activity tracking by @dirkkul in #12425
- Don't allocate a mutex on every key-locker call by @dirkkul in #12430
- feat(multi2vec-twelvelabs): add TwelveLabs Marengo multimodal vectorizer by @antas-marcin in #12431
- perf(bm25): parallelize block term creation across properties by @amourao in #12020
- perf(hnsw): slab-allocate visited sparse-set segments by @abdelr in #12374
- feat(hnsw): respect per-query concurrency budget in compressed rescore by @asdine in #12421
- Fix usage module with named vectors where one is a prefix of another by @dirkkul in #12428
- fix(panics): handle ECONNRESET errors in handlePanics function by @amourao in #12449
- fix: handle context cancellation in cursor operations to prevent incorrect nil returns by @amourao in #12448
- Remove tmp files in compaction/cleanup on failure by @dirkkul in #12452
- Switch off bloom filters for collection export by @dirkkul in #12455
- async replication: resolve replicas locally, never implicitly activate a tenant by @jeroiraz in #12256
- Refresh the memory monitor while shards are read-only by @dirkkul in #12468
- docs(backup): mark the non-hardlink backup fallback as deprecated (removed in v1.40) by @etiennedi in #12469
- fix: return the gRPC query profile when a query matches no objects by @etiennedi in #12381
- Use direct map acces for shard movement teardown by @dirkkul in #12467
- fix(tools): adapt qa_pr.sh log fetch to gh >= 2.97 escape-sequence guard by @antas-marcin in #12462
- fix(async-repl): stop worker-pool grow path leaking goroutines by @jeroiraz in #12107
- fix(async-repl): restore shard after a failed tenant freeze by @jeroiraz in #12108
- Merge stable/v1.37 into stable/v1.38 by @antas-marcin in #12472
- test(replication): wait for shard readiness after restart across read_repair suite by @jeroiraz in #12466
- Remove the unused shardReindexerV3 scheduler by @etiennedi in #12478
- fix(dynamic): clean up partial HNSW commit log on aborted flat->HNSW upgrade (v1.37) by @asdine in #12420
- Pool zstd encoders in backups by @dirkkul in #12477
- Backups: never store a partially written chunk by @dirkkul in #12463
- perf(hfresh): parallelize rescoring with budget-aware workers by @asdine in #12487
- perf(hfresh): read rescore vectors through one bucket view with pooled buffers by @asdine in #12490
- fix(schema): return explicit bm25 b/k1 values of 0 in schema responses by @amourao in #12489
- hotfix: RUNTIME_REINDEX_ENABLED kill switch (off by default) by @etiennedi in #12491
- lsmkv: stop CheckExpectedStrategy from heap-allocating its variadic slice by @dirkkul in #12494
Full Changelog: v1.38.8...v1.38.9
v1.39.0 - Namespaces, RQ4, Hybrid MMR, Alter Schema, gRPC web, Search REST API
Breaking Changes
none
Namespaces
Namespaces add control-plane and data isolation between users on a shared cluster.
- Add counter for blocked namespace requests by @dirkkul in #11721
- Fix namespace test that is flaky due to EC by @dirkkul in #11806
- Namespaces: Match colon-containing user/group ids literally for global callers by @dirkkul in #11868
- Add gate to disallow global non-operator users by @dirkkul in #11908
- Deny operator only surface to namespaced users by @dirkkul in #11922
- Namespace local roles by @dirkkul in #11873
- feat: namespace graduation using backup/restore by @tsmith023 in #11924
- Namespace suspend scaffolding (errors etc) by @dirkkul in #12204
- Namespace suspend RAFT states by @dirkkul in #12239
- Namespace suspend: Check namespace status for DB Users by @dirkkul in #12266
- Fix namespace regexp by @dirkkul in #12292
- Namespace: Add endpoints for suspend by @dirkkul in #12291
- Return first letters of API keys for admins on namespaced clusters by @dirkkul in #12316
BM25 / BlockMax (BMW) rework
- fix(bm25): record max-impact pair on memtable BlockEntry by @amourao in #11780
- perf(bm25): faster varint decoding (reservoir + 64-bit reads) by @amourao in #11770
- perf(bm25): Tier-1 allocation cuts in the BlockMax WAND hot path by @amourao in #11772
- perf(bm25): WAND scoring-loop & data-structure optimizations by @amourao in #11773
- perf(bm25): defer tombstone checks from advance-time to scoring by @amourao in #11774
- perf(bm25): tighten block-entry scanning in the WAND loop by @amourao in #11775
- perf(bm25): round-6 query-setup path optimization by @amourao in #11776
- perf(bm25): round-7 matched-branch sort elision by @amourao in #11777
- perf(bm25): gate DoBlockMaxWand prune-branch repair on needFullSort by @amourao in #11915
- fix(bm25): dedup duplicate properties (last boost wins) by @etiennedi in #12004
- fix(bm25): propagate combineResults error (was silent empty results) by @etiennedi in #12007
- perf(bm25): approximate object count for IDF, reuse query stats on blockmax fallback by @amourao in #12017
- fix(bm25): apply propertyBoost to WAND pivot and block-impact bounds by @amourao in #12018
- perf(bm25): cursor tombstone and filter probes in block-max WAND by @amourao in #12046
- perf(bm25): tiered merged filter for block-max WAND by @amourao in #12047
- feat: add support for cross-property AND matching in BM25 search by @amourao in #11929
- perf(bm25): parallelize block term creation across properties by @amourao in #12020
Alter Schema - Reindex property (Preview)
Adds support for changing property's index types.
- [Reindex Fixes A] fix: idempotent recovery-swap marking after mid-FINALIZING restart by @etiennedi in #11976
- [Reindex Fixes A] test: harden multinode reindex tests against weak-VM timing by @etiennedi in #11538
- [Reindex Fixes A] test: tolerate transient /v1/tasks 500s after node restarts by @etiennedi in #11530
- [Reindex Fixes A] fix: class DELETE racing a draining reindex worker re-created the class dir by @etiennedi in #11539
- [Reindex Fixes A] fix: atomic tokenization+bucket snapshot per BM25 query (LiveQueries flake) by @etiennedi in #11540
- [Reindex Fixes B] fix: partial-state cleanup deleted live class-level deferred-finalize dirs by @etiennedi in #11982
- fix(dtm): fail/retry reindex task on OnTaskCompleted schema-flip failure (#297) by @etiennedi in #11986
- feat(reindex): GA API rework per RFC (v1.39) — resource-oriented index endpoints by @etiennedi in #12252
Alter Schema - Drop vector index (Preview)
Support for dropping inverted indices from existing properties, allowing users to reclaim disk space by removing indices that are no longer needed, with RBAC integration and multi-tenancy support.
- test: add tests for collections being created with empty vector index type by @antas-marcin in #11718
- feat(drop-vector-index): reject writes carrying a dropped vector index by @antas-marcin in #11804
- feat(drop-vector-index): reject introducing the "none" vector index type on collection update by @antas-marcin in #11805
- feat(drop-vector-index): introduce (storobj.Object).RemoveTargetVector method by @antas-marcin in #11810
- feat(drop-vector-index): introduce segment edit ops bolt facility by @antas-marcin in #11811
- feat(drop-vector-index): introduce compactor transformer hook by @antas-marcin in #11812
- feat(drop-vector-index): apply value transformer in segment cleaner by @antas-marcin in #11822
- feat(drop-vector-index): wire edit ops into segment compaction by @antas-marcin in #11825
- feat(drop-vector-index): clean pending segments via edit ops with retry/quarantine by @antas-marcin in #11831
- feat(drop-vector-index): bridge edit-ops transformer to objects bucket by @antas-marcin in #11870
- feat(drop-vector-index): implement drop vector index distributed task by @antas-marcin in #11876
- feat(drop-vector-index): gate schema removal of dropped vector on cleanup FINISHED by @antas-marcin in #11889
- feat(drop-vector-index): fail the unit when cleanup quarantines a segment by @antas-marcin in #11900
- fix(drop-vector-index): reject writes targeting a dropped vector on the receiving node by @antas-marcin in #12105
- test(drop-vector-index): alter schema drop vector index e2e tests by @antas-marcin in #12095
- feat(drop-vector-index): cold-tenant completion, MT-scale coverage, tenant-lifecycle decoupling by @antas-marcin in #12295
gRPC web
Adds gRPC web endpoint.
- feat: introduce
/grpc-webendpoint by @tsmith023 in #12024
Search REST API
Adds dedicated REST API for performing search queries.
- feat(rest): envelope search response {id, properties, references, metadata} by @g-despot in #12133
- feat(rest): POST /v1/search/{collection}/near-text — REST near-text search endpoint by @g-despot in #12077
- rest search: camelCase payload fields; nested reserved rerank object by @g-despot in #12227
Hybrid MMR
Adds support for Maximal Marginal Relevance in Hybrid queries.
RQ4
4Bit Rotational Quantization.
Boost API
Soft-ranking support.
Async replication
Async replication optimizations and fixes.
- perf(async-rep): reuse a single cursor across the hashbeat digest scan by @jeroiraz in #11833
- feat(async-rep): propagate raw on-disk object bytes by @jeroiraz in #11853
- perf(async-replication): allocate propagation buffers per-hashBeat, not per-range by @jeroiraz in #11961
- fix(async-replication): hoist hashtree-init wait out of RLock in merge paths by @jeroiraz in #12027
- fix(async-replication): don't let TimeBased repair clobber a newer local write by @jeroiraz in #12028
- perf(async-replication): batched hashtree-root pre-filter for many-tenant clusters by @jeroiraz in #11968
- fix(replication): avoid nil-pointer deref in read-repair when a live winner's refetch fails by @jeroiraz in #12030
- fix(async-replication): serial...
v1.38.8 - Batch flat ContainsAny/ContainsAll/ContainsNone
Breaking Changes
none
New Features
none
Fixes
- Remove support for restoring old backup formats by @dirkkul in #12338
- tokenizer: fix KagomeJa custom-dict throttle release without acquire by @aliszka in #12341
- Route shard access through Index.withShardOrRemote by @dirkkul in #12366
- Allocate per-tenant vector cache memory lazily and proportionally to tenant size by @asdine in #12116
- fix(replication): unify the loading-shard readiness check and fix FetchObjects by @moogacs in #12370
- Add retry to module base client by @dirkkul in #12377
- fix(queue): fix data race in TestPartialChunkRecovery by @asdine in #12383
- Return first letters of API keys for admins on namespaced clusters by @dirkkul in #12316
- feat: add support for cross-property AND matching in BM25 search by @amourao in #11929
- tokenizer: add AnalyzeBatch with resolve-once dispatch and metrics at dispatch by @aliszka in #12342
- lsmkv/roaringset: cut per-read allocations on the roaringset read path by @aliszka in #12343
- test: pin the nearObject anchor in the unlimited vector search tests by @etiennedi in #12376
- chore(deps): bump x/net and x/text in all three modules (CVE-2026-46600, CVE-2026-56852) by @etiennedi in #12371
- fix(grpc): stop truncating UUIDs in id_as_bytes and batch-delete uuid by @etiennedi in #12348
- log: put actionable error text in msg on the boot and exit paths by @etiennedi in #12354
- lsmkv/roaringset: storage-side support for batched Contains resolution by @aliszka in #12388
- Reduce HNSW snapshot allocations by @dirkkul in #12387
- inverted: batch flat ContainsAny/ContainsAll/ContainsNone under one consistent view by @aliszka in #12395
- fix(lsmkv): require every Bucket to carry a logger by @etiennedi in #12404
- fix(backup): reset the inactivity deadline on a successful halt by @etiennedi in #12403
- fix disposable_created size label off-by-one by @etiennedi in #12373
- feat(backup-s3): introduce new auth broker credentials by @gkampitakis in #11880
- fix(cyclemanager): roll back shouldAbort when ctx expires while callback runs by @etiennedi in #12265
- config, inverted: make batched Contains opt-in via runtime-overridable gate by @aliszka in #12410
- fix(cyclemanager): roll back abort when ctx expires while callback runs by @aliszka in #12411
- Add nested object filtering support to usage module by @dirkkul in #12409
Full Changelog: v1.38.7...v1.38.8
v1.39.0-rc.1 - Namespaces, Alter Schema, gRPC web, Search REST API
This is a release candidate for the upcoming v1.39.0 release.
A release candidate (RC) means the release is considered feature complete and has finished beta-testing. Any issues discovered during the RC phase will lead to new rc releases. The final rc release becomes the stable release. We're happy for your feedback about this pre-release.
This pre-release contains:
- Namespaces (GA)
- Alter Schema - Reindex property (Preview)
- Alter Schema - Drop vector index (Preview)
- gRPC web (GA)
- Search REST API (GA)
v1.38.7 - Never use a search result as a read-repair payload
Breaking Changes
none
New Features
none
Fixes
- Fix empty range results served after enable-rangeable reindex with INDEX_RANGEABLE_IN_MEMORY=true by @byronvoorbach in #12215
- chore(rplc-mvmnt): remove
SyncShardsin favour of node localShard.dropby @tsmith023 in #12217 - Fix namespace regexp by @dirkkul in #12292
- Make number of files that are deduplicated in incremental backups configurable by @dirkkul in #12234
- fix(db): shut down vector index when its queue creation fails to avoid orphaning it by @antas-marcin in #12192
- Namespace: Add endpoints for suspend by @dirkkul in #12291
- cyclemanager: replace per-tick due-scan with a due-heap scheduler by @aliszka in #12099
- fix(replica-fast): avoid
nil-deref panics infilepath.WalkDircallbacks by @tsmith023 in #12300 - Update GRPC dependency by @dirkkul in #12311
- feat(telemetry): persistent cluster and node identity for correlatable telemetry by @moogacs in #12296
- Reduce heap usage in HNSW condensor by @dirkkul in #12306
- AddMultiVector idempotence fix by @trengrj in #12170
- Drop fmt.Sprintf from commit-log path builders to save allocations by @dirkkul in #12310
- Use a view instead of copy in hnsw packed connection by @dirkkul in #12309
- Reduce allocations for auto schema time/uuid parsing by @dirkkul in #12301
- refact(telemetry) gate cluster-id commit on telemetry being enabled by @moogacs in #12326
- fix(lsmkv): purge stale GlobalBucketRegistry entries on every teardown path by @tsmith023 in #12188
- fix(graphql): reject non-object variables instead of panicking by @moogacs in #12332
- Don't discard teardown work when one shutdown step fails by @dirkkul in #12333
- Improve segment index performance by using van Emde Boas layout by @dirkkul in #12327
- Fix bugs in index shutdown by @dirkkul in #12331
- Drop derived file names when recovering an aborted compaction by @dirkkul in #12336
- Fix shard shutdown backup and wrong error return by @dirkkul in #12337
- chore(deps): bump golang.org/x/net to v0.56.0 and golang.org/x/text to v0.39.0 (CVE-2026-46600, CVE-2026-56852) by @etiennedi in #12347
- deps: adjust go dependencies in sub projects by @antas-marcin in #12362
- Release shard references exactly once per acquire by @dirkkul in #12363
- fix(replica): never use a search result as a read-repair payload by @etiennedi in #12355
Full Changelog: v1.38.6...v1.38.7
v1.37.14 - Never use a search result as a read-repair payload
Breaking Changes
none
New Features
none
Fixes
- Do not load all lazy shards for property add by @dirkkul in #12184
- fix(usage): abort in-flight usage scan when its collection is dropped by @antas-marcin in #12187
- Do not load lazy loaded shards on backup restore by @dirkkul in #12186
- Stop commit log churn flaking vector storage size test by @dirkkul in #12231
- Backport to v1.36: fix flaky TestMakeUnboundedChannel_CapShrink by @asdine in #12236
- backport: fix(memberlist): retry on join with deadline by @moogacs in #12241
- perf(inverted): add EncodeInto for BlockEntry and BlockData by @amourao in #12150
- perf(lsmkv): pass data start offset to MarshalSortedKeys by @amourao in #12151
- fix(lsmkv): capture values in keyOnly map cursor so keys aren't dropped by @amourao in #12152
- perf(lsmkv): add reusable decode helpers for inverted node data by @amourao in #12154
- perf(lsmkv): add EncodeAppend arena-append primitive to varenc by @amourao in #12149
- perf(lsmkv): add reusable encode pipeline for inverted compaction by @amourao in #12160
- fix(memberlist): don't fail startup when a single node can't join (self-heal) by @moogacs in #12243
- fix(test): join usage poll goroutines so they cannot assert after test completion by @antas-marcin in #12237
- test(async-repl): gate scheduler close tests on dispatch round-trips, not channel-buffer sampling by @jeroiraz in #12250
- fix(db): ABBA deadlock between updateReplicationConfig and lazy shard load wedges RAFT FSM by @jfrancoa in #12238
- perf(lsmkv): wire inverted compaction through the reusable encode pipeline by @amourao in #12161
- perf(lsmkv): reuse decode buffers in the inverted cursor by @amourao in #12163
- perf(lsmkv): reuse the propLengthsView across inverted compaction nodes by @amourao in #12233
- refactor(lsmkv): extract inverted block codec into inverted/blockenc by @amourao in #12244
- fix(lsmkv): repair stable/v1.37 build broken by the v1.36 merge (blockenc.PackedDecode) by @jeroiraz in #12257
- Key the auth singleflight on the key, not just the user by @dirkkul in #12270
- Fix RBAC regexp by @dirkkul in #12251
- feat(monitoring): unified background-process activity + duration metrics by @moogacs in #12275
- Make number of files that are deduplicated in incremental backups configurable by @dirkkul in #12234
- fix(db): shut down vector index when its queue creation fails to avoid orphaning it by @antas-marcin in #12192
- cyclemanager: replace per-tick due-scan with a due-heap scheduler by @aliszka in #12099
- Update GRPC dependency by @dirkkul in #12311
- feat(telemetry): persistent cluster and node identity for correlatable telemetry by @moogacs in #12296
- Reduce heap usage in HNSW condensor by @dirkkul in #12306
- AddMultiVector idempotence fix by @trengrj in #12170
- Drop fmt.Sprintf from commit-log path builders to save allocations by @dirkkul in #12310
- Use a view instead of copy in hnsw packed connection by @dirkkul in #12309
- Reduce allocations for auto schema time/uuid parsing by @dirkkul in #12301
- refact(telemetry) gate cluster-id commit on telemetry being enabled by @moogacs in #12326
- fix(graphql): reject non-object variables instead of panicking by @moogacs in #12332
- Don't discard teardown work when one shutdown step fails by @dirkkul in #12333
- Improve segment index performance by using van Emde Boas layout by @dirkkul in #12327
- Fix bugs in index shutdown by @dirkkul in #12331
- Drop derived file names when recovering an aborted compaction by @dirkkul in #12336
- Fix shard shutdown backup and wrong error return by @dirkkul in #12337
- chore(deps): bump golang.org/x/net to v0.56.0 and golang.org/x/text to v0.39.0 (CVE-2026-46600, CVE-2026-56852) by @etiennedi in #12347
- deps: adjust go dependencies in sub projects by @antas-marcin in #12362
- Release shard references exactly once per acquire by @dirkkul in #12363
- fix(replica): never use a search result as a read-repair payload by @etiennedi in #12355
Full Changelog: v1.37.13...v1.37.14
v1.39.0-rc.0 - Namespaces, Alter Schema, gRPC web, Search REST API
This is a release candidate for the upcoming v1.39.0 release.
A release candidate (RC) means the release is considered feature complete and has finished beta-testing. Any issues discovered during the RC phase will lead to new rc releases. The final rc release becomes the stable release. We're happy for your feedback about this pre-release.
This pre-release contains:
- Namespaces (GA)
- Alter Schema - Reindex property (Preview)
- Alter Schema - Drop vector index (Preview)
- gRPC web (GA)
- Search REST API (GA)
v1.38.6 - Hybrid Diversity & MMR Improvements, LSM store inverted compaction improvements, Raft communication Fixes
Breaking Changes
none
New Features
none
Fixes
- feat(rest): envelope search response {id, properties, references, metadata} by @g-despot in #12133
- fix(async-repl): fold ≤cutoff changes into the async-checkpoint bounded hashtree by @jeroiraz in #12128
- feat(rest): POST /v1/search/{collection}/near-text — REST near-text search endpoint by @g-despot in #12077
- perf(replication): make hashbeat FSM target gate allocation-free by @jeroiraz in #12222
- Do not load all lazy shards for property add by @dirkkul in #12184
- fix(reindex): concurrent writes during migration converge into the new bucket (#11688, #298) by @etiennedi in #11985
- fix(usage): abort in-flight usage scan when its collection is dropped by @antas-marcin in #12187
- Do not load lazy loaded shards on backup restore by @dirkkul in #12186
- fix(dtm): fail/retry reindex task on OnTaskCompleted schema-flip failure (#297) by @etiennedi in #11986
- fix(reindex): mirror co-located props on batch-ref and delta writes by @etiennedi in #12210
- Stop commit log churn flaking vector storage size test by @dirkkul in #12231
- Backport to v1.36: fix flaky TestMakeUnboundedChannel_CapShrink by @asdine in #12236
- rest search: camelCase payload fields; nested reserved rerank object by @g-despot in #12227
- backport: fix(memberlist): retry on join with deadline by @moogacs in #12241
- perf(inverted): add EncodeInto for BlockEntry and BlockData by @amourao in #12150
- perf(lsmkv): pass data start offset to MarshalSortedKeys by @amourao in #12151
- fix(lsmkv): capture values in keyOnly map cursor so keys aren't dropped by @amourao in #12152
- perf(lsmkv): add reusable decode helpers for inverted node data by @amourao in #12154
- perf(lsmkv): add EncodeAppend arena-append primitive to varenc by @amourao in #12149
- perf(lsmkv): add reusable encode pipeline for inverted compaction by @amourao in #12160
- fix(memberlist): don't fail startup when a single node can't join (self-heal) by @moogacs in #12243
- Fix race in backup namespace test by @dirkkul in #12247
- fix(test): join usage poll goroutines so they cannot assert after test completion by @antas-marcin in #12237
- test(async-repl): gate scheduler close tests on dispatch round-trips, not channel-buffer sampling by @jeroiraz in #12250
- fix(db): ABBA deadlock between updateReplicationConfig and lazy shard load wedges RAFT FSM by @jfrancoa in #12238
- perf(lsmkv): wire inverted compaction through the reusable encode pipeline by @amourao in #12161
- Namespace suspend RAFT states by @dirkkul in #12239
- perf(lsmkv): reuse decode buffers in the inverted cursor by @amourao in #12163
- perf(lsmkv): reuse the propLengthsView across inverted compaction nodes by @amourao in #12233
- refactor(lsmkv): extract inverted block codec into inverted/blockenc by @amourao in #12244
- fix(lsmkv): repair stable/v1.37 build broken by the v1.36 merge (blockenc.PackedDecode) by @jeroiraz in #12257
- Hybrid Diversity & MMR by @trengrj in #11903
- Key the auth singleflight on the key, not just the user by @dirkkul in #12270
- Fix RBAC regexp by @dirkkul in #12251
- Namespace suspend: Check namespace status for DB Users by @dirkkul in #12266
- fix(rplc-mvmnt):
HaltForTransferoverlap during concurrent COPY ops by @tsmith023 in #12218 - feat(monitoring): unified background-process activity + duration metrics by @moogacs in #12275
Full Changelog: v1.38.5...v1.38.6
v1.36.23 - Cluster communication related Fixes
Breaking Changes
none
New Features
none
Fixes
- perf(search): eliminate per-call allocations in SelectProperties lookups by @etiennedi in #12134
- fix(test): widen flaky RansomNote aggregate count assertion by @etiennedi in #12194
- fix(hnsw): entrypoint repair test flake by @trengrj in #12205
- fix(rbac): error on unknown command version instead of looping forever during migration by @antas-marcin in #12196
- fix(db): propagate usage-file removal error in NewShard instead of discarding it by @antas-marcin in #12191
- Backport to v1.36: fix flaky TestMakeUnboundedChannel_CapShrink by @asdine in #12236
- backport: fix(memberlist): retry on join with deadline by @moogacs in #12241
- fix(memberlist): don't fail startup when a single node can't join (self-heal) by @moogacs in #12243
Full Changelog: v1.36.22...v1.36.23
v1.38.5 - LSM store performance improvements, Batch vectorization potencial deadlocks Fix, Allocation free reference cacher improvement
Breaking Changes
none
New Features
none
Fixes
- fix(hfresh): never hold version-map locks across LSM operations by @asdine in #12119
- Search time entrypoint repair by @trengrj in #11956
- Fix batch vectorization deadlocks by @dirkkul in #12070
- flat: fix vectors invisible to flat cached search after restart with unflushed data by @asdine in #12132
- perf(usage): open dimensions bucket once per shard with sequential-access hint by @antas-marcin in #12106
- When resetting the HNSW graph, ensure tombstone metric is cleared by @trengrj in #12131
- Fix flaky GQL accptance test with EC issues by @dirkkul in #12140
- fix(concurrency): thread per-query budget into sroar merge fan-out (P1a) by @etiennedi in #12076
- ci: switch acceptance tests to use ubicloud-standard-4 runner by @antas-marcin in #12148
- fix(lsmkv): sort WALs before recovery so the newest stays the active memtable by @antas-marcin in #12138
- ci: switch integration and module tests to ubicloud runners by @antas-marcin in #12153
- perf(inverted): reuse read buffer in objectsByDocID by @amourao in #12142
- perf(sorter,group-by): reuse read buffer in docID resolution loops by @amourao in #12143
- perf(lsmkv): cache immutable memtable tombstone snapshot for queries by @amourao in #12051
- perf(lsmkv): lock-free tombstone reads + write-side lock split by @amourao in #12052
- feat(lsmkv): make in-place segment cleanup switch crash-atomic by @antas-marcin in #12156
- fix(generative-google): make class settings optional to avoid sending defaults to Gemini by @antas-marcin in #12123
- feat(usage): warn when collection cycles overlap the collection interval by @antas-marcin in #12174
- Skip lazy-unloaded tenant shards in TTL sweep by @dirkkul in #12178
- refatc(diagnostic): add slow raft apply log gate by @moogacs in #12180
- backport: fix(acceptance-test): handle http client concurrency by @moogacs in #12182
- backport: fix(memberlist): retry on join with deadline by @moogacs in #12183
- chore(rplc-mvmnt): remove
consumer.syncfrom happy path due to redundancy by @tsmith023 in #12179 - perf(search): eliminate per-call allocations in SelectProperties lookups by @etiennedi in #12134
- perf(internode): exact-size single-alloc marshalling for fan-out payloads (slice 1/3) by @etiennedi in #12135
- fix(test): widen flaky RansomNote aggregate count assertion by @etiennedi in #12194
- fix(hnsw): entrypoint repair test flake by @trengrj in #12205
- fix(replica-movement): atomic LWW on change-log replay by @moogacs in #12190
- fix(lsmkv): reclaim deleted docs' property lengths at compaction by @amourao in #12147
- fix(lsmkv): track live-set avgdl at compaction so BM25 scores don't drift with deletes (#311) by @amourao in #12168
- [Reindex Fixes A] fix: atomic tokenization+bucket snapshot per BM25 query (LiveQueries flake) by @etiennedi in #11540
- chore(rplc-mvmnt): add more debug logging to ccl usage by @tsmith023 in #12175
- Namespace suspend scaffolding (errors etc) by @dirkkul in #12204
- fix(rbac): error on unknown command version instead of looping forever during migration by @antas-marcin in #12196
- ci: split unit tests into adapters / non-adapters parts by @antas-marcin in #12185
- fix(db): propagate usage-file removal error in NewShard instead of discarding it by @antas-marcin in #12191
- Expose structured where-filter on the MCP hybrid search tool by @g-despot in #11755
- [Reindex Fixes B] fix: partial-state cleanup deleted live class-level deferred-finalize dirs by @etiennedi in #11982
Full Changelog: v1.38.4...v1.38.5