v1.39.1
v1.39.1 - Search REST endpoints, async replication & LSM performance, Backup, Geo & Usage module fixes
Added 3
- Add RUNTIME_REINDEX_ENABLED kill switch off by default
- Introduce includeRoles to backup and restore process
- Add opt-in gRPC transport for Backup-gcs
Changed 6
- Pool zstd encoders in backups
- Parallelize rescoring with budget-aware workers in hfresh
- Read rescore vectors through one bucket view with pooled buffers in hfresh
- Resume interrupted strips from the recorded pending set in drop-vector-index
- Size hashbeat digest buffers by set count, not leaf count in async replication
- Warm the version map in the background at startup in hfresh
Fixed 9
- Resolve replicas locally in async replication without implicitly activating a tenant
- Refresh the memory monitor while shards are read-only
- Return the gRPC query profile when a query matches no objects
- Stop worker-pool grow path leaking goroutines in async replication
- Restore shard after a failed tenant freeze in async replication
- Clean up partial HNSW commit log on aborted flat->HNSW upgrade
- Never store a partially written chunk in backups
- Return explicit bm25 b/k1 values of 0 in schema responses
- Report the tenant's pre-freeze status on an aborted freeze
Removed 1
- Remove the unused shardReindexerV3 scheduler
Deprecated 1
- Non-hardlink backup fallback is deprecated and will be removed in v1.40
From Weaviate
Breaking Changes
none
New Features
none
Fixes
- async replication: resolve replicas locally, never implicitly activate a tenant by @jeroiraz in https://github.com/weaviate/weaviate/pull/12256
- Refresh the memory monitor while shards are read-only by @dirkkul in https://github.com/weaviate/weaviate/pull/12468
- docs(backup): mark the non-hardlink backup fallback as deprecated (removed in v1.40) by @etiennedi in https://github.com/weaviate/weaviate/pull/12469
- fix: return the gRPC query profile when a query matches no objects by @etiennedi in https://github.com/weaviate/weaviate/pull/12381
- Use direct map acces for shard movement teardown by @dirkkul in https://github.com/weaviate/weaviate/pull/12467
- fix(tools): adapt qa_pr.sh log fetch to gh >= 2.97 escape-sequence guard by @antas-marcin in https://github.com/weaviate/weaviate/pull/12462
- fix(async-repl): stop worker-pool grow path leaking goroutines by @jeroiraz in https://github.com/weaviate/weaviate/pull/12107
- fix(async-repl): restore shard after a failed tenant freeze by @jeroiraz in https://github.com/weaviate/weaviate/pull/12108
- test(replication): wait for shard readiness after restart across read_repair suite by @jeroiraz in https://github.com/weaviate/weaviate/pull/12466
- Remove the unused shardReindexerV3 scheduler by @etiennedi in https://github.com/weaviate/weaviate/pull/12478
- fix(dynamic): clean up partial HNSW commit log on aborted flat->HNSW upgrade (v1.37) by @asdine in https://github.com/weaviate/weaviate/pull/12420
- Pool zstd encoders in backups by @dirkkul in https://github.com/weaviate/weaviate/pull/12477
- Backups: never store a partially written chunk by @dirkkul in https://github.com/weaviate/weaviate/pull/12463
- perf(hfresh): parallelize rescoring with budget-aware workers by @asdine in https://github.com/weaviate/weaviate/pull/12487
- perf(hfresh): read rescore vectors through one bucket view with pooled buffers by @asdine in https://github.com/weaviate/weaviate/pull/12490
- fix(schema): return explicit bm25 b/k1 values of 0 in schema responses by @amourao in https://github.com/weaviate/weaviate/pull/12489
- hotfix: RUNTIME_REINDEX_ENABLED kill switch (off by default) by @etiennedi in https://github.com/weaviate/weaviate/pull/12491
- lsmkv: stop CheckExpectedStrategy from heap-allocating its variadic slice by @dirkkul in https://github.com/weaviate/weaviate/pull/12494
- feat(drop-vector-index): resume interrupted strips from the recorded pending set by @antas-marcin in https://github.com/weaviate/weaviate/pull/12442
- Remove TestReadSnapshotBufferAllocation which was flaky by @dirkkul in https://github.com/weaviate/weaviate/pull/12493
- perf(async-repl): size hashbeat digest buffers by set count, not leaf count by @jeroiraz in https://github.com/weaviate/weaviate/pull/12481
- Read the dimensions bucket once per usage sweep by @dirkkul in https://github.com/weaviate/weaviate/pull/12503
- perf(hfresh): warm the version map in the background at startup by @asdine in https://github.com/weaviate/weaviate/pull/12504
- Report the tenant's pre-freeze status on an aborted freeze by @dirkkul in https://github.com/weaviate/weaviate/pull/12508
- Unmarshal namespace snapshot outside of lock by @dirkkul in https://github.com/weaviate/weaviate/pull/12506
- Size the roaringsetrange pread read buffer from the segment payload by @dirkkul in https://github.com/weaviate/weaviate/pull/12499
- fix(modules): skip vectorizing named vectors whose index is mid-drop by @jfrancoa in https://github.com/weaviate/weaviate/pull/12498
- feat(backups): introduce
includeRolesto backup/restore process by @tsmith023 in https://github.com/weaviate/weaviate/pull/12322 - fix flaky teardown in async replication acceptance suites by @jeroiraz in https://github.com/weaviate/weaviate/pull/12520
- Backup-gcs: add opt-in gRPC transport by @dirkkul in https://github.com/weaviate/weaviate/pull/12447
- fix(batch): report one error per object when a shard refuses a batch by @g-despot in https://github.com/weaviate/weaviate/pull/12519
- fix(db): move
st.trackDBLoadProgressinsidest.reloadDBFromSchemaby @tsmith023 in https://github.com/weaviate/weaviate/pull/12524 - fix(async-repl): backport #12079 and #12127 to stable/v1.37 by @jfrancoa in https://github.com/weaviate/weaviate/pull/12547
- Namespaces: Gate tenant actions by @dirkkul in https://github.com/weaviate/weaviate/pull/12513
- Testcontainer endpoint + docstring fixes by @dirkkul in https://github.com/weaviate/weaviate/pull/12540
- Namespaces: Add plumbing for namespace exister by @dirkkul in https://github.com/weaviate/weaviate/pull/12541
- Keep the geo vector cache across deletion cycles by @dirkkul in https://github.com/weaviate/weaviate/pull/12557
- Fix non-compiling test by @dirkkul in https://github.com/weaviate/weaviate/pull/12562
- fix(grpc): don't dereference nil target combination in parseNearVec by @tsmith023 in https://github.com/weaviate/weaviate/pull/12567
- fix(backup): serve a failed backup's reason from the participant status by @etiennedi in https://github.com/weaviate/weaviate/pull/12548
- Keep error type through the objects manager by @dirkkul in https://github.com/weaviate/weaviate/pull/12510
- Read only the geo property when resolving a coordinate by @dirkkul in https://github.com/weaviate/weaviate/pull/12564
- fix(async-repl): surface root-prefilter skips in asyncReplicationStatus by @jeroiraz in https://github.com/weaviate/weaviate/pull/12566
- perf(lsmkv): targeted replace scan with newest-wins visibility by @amourao in https://github.com/weaviate/weaviate/pull/12396
- Keep the parked pread buffer on sequential replace cursor scans by @jeroiraz in https://github.com/weaviate/weaviate/pull/12571
- Complete updateIndexTenants when one tenant fails by @dirkkul in https://github.com/weaviate/weaviate/pull/12507
- Drop per-cycle allocations from the idle compaction path by @dirkkul in https://github.com/weaviate/weaviate/pull/12561
- perf(lsmkv): read targeted-scan ranges straight from the file by @amourao in https://github.com/weaviate/weaviate/pull/12592
- Parse replace nodes without allocating by @dirkkul in https://github.com/weaviate/weaviate/pull/12558
- Fixes bugs segment group tmp file recovery by @dirkkul in https://github.com/weaviate/weaviate/pull/12458
- Include GEO HNSW index in backups by @dirkkul in https://github.com/weaviate/weaviate/pull/12584
- Pin replacement replicas to a namespace's home node by @dirkkul in https://github.com/weaviate/weaviate/pull/12554
- Treat a non-positive vector cache maxSize as unbounded by @dirkkul in https://github.com/weaviate/weaviate/pull/12586
- fix(hfresh): hold the posting lock during version map warmup by @asdine in https://github.com/weaviate/weaviate/pull/12612
- fix(cache): count occupied slots, and add PreloadIfAbsent by @amourao in https://github.com/weaviate/weaviate/pull/12593
- Concurrently prefill geo caches using exinsg prefiller by @dirkkul in https://github.com/weaviate/weaviate/pull/12583
- fix(dtm): treat an unrecognized task status as in-flight by @etiennedi in https://github.com/weaviate/weaviate/pull/12549
- fix(storobj): bound vector reads by their declared segment by @amourao in https://github.com/weaviate/weaviate/pull/12594
- Fix Geo property bugs by @dirkkul in https://github.com/weaviate/weaviate/pull/12616
- feat(rest): bm25 keyword search endpoint (REST Search API 1/4) by @g-despot in https://github.com/weaviate/weaviate/pull/12245
- feat(rest): hybrid search endpoint (REST Search API 2/4) by @g-despot in https://github.com/weaviate/weaviate/pull/12246
- feat(rest): near-object search endpoint (REST Search API 3/4) by @g-despot in https://github.com/weaviate/weaviate/pull/12248
- feat(rest): aggregate counts endpoint (REST Search API 4/4) by @g-despot in https://github.com/weaviate/weaviate/pull/12249
- fix(tools): don't let SIGPIPE break the gh escape-sequence feature check by @antas-marcin in https://github.com/weaviate/weaviate/pull/12625
- Hybrid Aggregation: Apply the filter to the BM25 search by @dirkkul in https://github.com/weaviate/weaviate/pull/12622
- Wait for the local schema before writes that resolve an index by name by @dirkkul in https://github.com/weaviate/weaviate/pull/12587
- feat(auto-schema): create a "default" named vector instead of a legacy one by @antas-marcin in https://github.com/weaviate/weaviate/pull/12620
- Fix three crashes and data corruptions in cluster state handling by @dirkkul in https://github.com/weaviate/weaviate/pull/12626
- fix(lsmkv): remove the partial segment a failed edit-op rewrite leaves behind by @antas-marcin in https://github.com/weaviate/weaviate/pull/12633
- test(usage): wait for storage to settle instead of relaxing the assertions by @antas-marcin in https://github.com/weaviate/weaviate/pull/12635
- fix(async-repl): never publish or load a stale hashtree snapshot by @jeroiraz in https://github.com/weaviate/weaviate/pull/12195
- fix(modules): don't panic when a batch has objects with no vectorizable properties by @antas-marcin in https://github.com/weaviate/weaviate/pull/12617
- fix(schema): reject invalid async replication config before RAFT commit by @jeroiraz in https://github.com/weaviate/weaviate/pull/12261
- Report every shard failure during index reconcile by @dirkkul in https://github.com/weaviate/weaviate/pull/12639
- test(drop-vector-index): retry the write after a leader kill instead of failing on the rejoin blip by @antas-marcin in https://github.com/weaviate/weaviate/pull/12678
- fix(db): stop the reindex cleanup sweep from hydrating every unhydrated tenant shard by @etiennedi in https://github.com/weaviate/weaviate/pull/12551
- fix(hybrid): fetch Boost.Depth-deep candidates in hybrid sub-searches by @hamodywe in https://github.com/weaviate/weaviate/pull/12537
- fix(usage): skip dropped named vectors when computing cold shard usage by @antas-marcin in https://github.com/weaviate/weaviate/pull/12681
- fix(usage): report legacy vector alongside named vectors in usage metrics by @antas-marcin in https://github.com/weaviate/weaviate/pull/12682
- Usage: Make cold tenants report the same data as hot tenants by @dirkkul in https://github.com/weaviate/weaviate/pull/12628
- perf(lsmkv): bound digest-RPC memtable snapshots to the requested key range by @jeroiraz in https://github.com/weaviate/weaviate/pull/12665
- [v1.38] fix(hnsw): drain commit-log maintenance before locking in Drop() (#12100) by @jfrancoa in https://github.com/weaviate/weaviate/pull/12699
- Add MUVERA specific usage calculations by @trengrj in https://github.com/weaviate/weaviate/pull/12294
- chore(reindex): remove unreachable reindex and shard symbols by @etiennedi in https://github.com/weaviate/weaviate/pull/12708
- chore: remove the /debug/index/rebuild/inverted* routes and the machinery only they could reach by @etiennedi in https://github.com/weaviate/weaviate/pull/12706
- Delete the unreachable reindex restart-recovery path (OnBeforeLsmInit) by @etiennedi in https://github.com/weaviate/weaviate/pull/12704
- Align returns for HOT and COLD tenants from usage module by @dirkkul in https://github.com/weaviate/weaviate/pull/12712
- fix(drop-vector-index): remove the muvera bucket of a dropped multi-vector index by @antas-marcin in https://github.com/weaviate/weaviate/pull/12718
- Namespaces: Effective-suspended derivation + shard-materialization guards by @dirkkul in https://github.com/weaviate/weaviate/pull/12464
- fix(drop-vector-index): remove hfresh directory and buckets when the index is dropped by @antas-marcin in https://github.com/weaviate/weaviate/pull/12720
- test(usage): settle the reactivated shard before taking the drop-vector baseline by @antas-marcin in https://github.com/weaviate/weaviate/pull/12721
- fix(schema): read sharding state under the class lock in CopyShardingState by @antas-marcin in https://github.com/weaviate/weaviate/pull/12723
- fix(test): give node readiness 120s instead of the 60s testcontainers default by @antas-marcin in https://github.com/weaviate/weaviate/pull/12729
- perf(async-repl): negotiate binary digest encoding on the gRPC HashTreeLevel RPC by @jeroiraz in https://github.com/weaviate/weaviate/pull/12666
- feat(rplc-mvmnt): add automated cleanup of stale replica movement operations by @tsmith023 in https://github.com/weaviate/weaviate/pull/12426
- perf(async-repl): carry byte-ID digests end-to-end on the compare pipeline by @jeroiraz in https://github.com/weaviate/weaviate/pull/12710
- fix(runtime-config): register disable_dimension_metrics as a runtime override by @amourao in https://github.com/weaviate/weaviate/pull/12733
- fix(config): name 1.39.0 in the HNSW snapshot deprecation warning by @g-despot in https://github.com/weaviate/weaviate/pull/12737
- fix(hnsw): restore cache reads for uncompressed non-MUVERA late-interaction rescore by @trengrj in https://github.com/weaviate/weaviate/pull/12731
- fix(lsmkv): write WAL tombstone pair before publishing inverted doc tombstone by @amourao in https://github.com/weaviate/weaviate/pull/12741
- fix(rest): index status reads the local FSM, not the leader by @etiennedi in https://github.com/weaviate/weaviate/pull/12697
- fix(distributedtask):
FinishedAtmeans finished by @etiennedi in https://github.com/weaviate/weaviate/pull/12696 - Resource scan: Dont load lazy shards and set newly loaded shards to ReadOnly too by @dirkkul in https://github.com/weaviate/weaviate/pull/12674
- Fix all linter issues coming form golangci-list v2.13.1 by @dirkkul in https://github.com/weaviate/weaviate/pull/12752
- fix(drop-vector-index): remove everything a dropped vector owns, and nothing else by @antas-marcin in https://github.com/weaviate/weaviate/pull/12722
- fix(drop-vector-index): remove the flat metadata file on the files-only path, add an async-indexing CI run by @antas-marcin in https://github.com/weaviate/weaviate/pull/12726
- perf(router): avoid full shard-list copy on single-shard routing plans by @jeroiraz in https://github.com/weaviate/weaviate/pull/12762
- perf(replication): cap zstd encoder concurrency and window in shared encoders by @jeroiraz in https://github.com/weaviate/weaviate/pull/12761
- perf(async-replication): gate hashbeat debug logging behind level check by @jeroiraz in https://github.com/weaviate/weaviate/pull/12760
- perf(async-replication): size prefilter chunk map by input, release dispatch buckets every pass by @jeroiraz in https://github.com/weaviate/weaviate/pull/12759
- Backup index.db from inactive dynamic tenants by @dirkkul in https://github.com/weaviate/weaviate/pull/12724
- fix(batch):
BatchStreamresult attribution, goroutine leaks, and shutdown races by @tsmith023 in https://github.com/weaviate/weaviate/pull/12627 - fix(drop-vector-index): clear the dynamic upgrade verdict on the cold-tenant path by @antas-marcin in https://github.com/weaviate/weaviate/pull/12754
- feat(repl): fix concurrent map write race in replicated writes by @tsmith023 in https://github.com/weaviate/weaviate/pull/12730
- fix(restore): route backup restore of RBAC roles and dynamic users through RAFT by @tsmith023 in https://github.com/weaviate/weaviate/pull/12660
- ci(drop-vector-index): split the cluster and async-indexing jobs in two by @antas-marcin in https://github.com/weaviate/weaviate/pull/12773
New Contributors
- @hamodywe made their first contribution in https://github.com/weaviate/weaviate/pull/12537
Full Changelog: https://github.com/weaviate/weaviate/compare/v1.39.0...v1.39.1