v1.39.1
📦 weaviateView on GitHub →
✨ 6 features🐛 56 fixes⚡ 1 deprecations🔧 63 symbols
Summary
This release includes numerous bug fixes and performance improvements across various modules, including async replication, backups, and HNSW. It also introduces new features for REST search endpoints and enhances namespace management.
Migration Steps
- Remove the unused shardReindexerV3 scheduler.
✨ New Features
- Introduce `includeRoles` to backup/restore process.
- Add opt-in gRPC transport for Backup-GCS.
- Implement BM25 keyword search endpoint (REST Search API 1/4).
- Implement hybrid search endpoint (REST Search API 2/4).
- Implement near-object search endpoint (REST Search API 3/4).
- Implement aggregate counts endpoint (REST Search API 4/4).
🐛 Bug Fixes
- Resolve replicas locally in async replication, never implicitly activate a tenant.
- Refresh the memory monitor while shards are read-only.
- Return the gRPC query profile when a query matches no objects.
- Use direct map access for shard movement teardown.
- Adapt qa_pr.sh log fetch to gh >= 2.97 escape-sequence guard.
- Stop worker-pool grow path leaking goroutines in async replication.
- Restore shard after a failed tenant freeze in async replication.
- Wait for shard readiness after restart across read_repair suite in replication tests.
- Clean up partial HNSW commit log on aborted flat->HNSW upgrade (v1.37).
- Pool zstd encoders in backups.
- Never store a partially written chunk in backups.
- Parallelize rescoring with budget-aware workers in hfresh.
- Read rescore vectors through one bucket view with pooled buffers in hfresh.
- Return explicit bm25 b/k1 values of 0 in schema responses.
- Introduce RUNTIME_REINDEX_ENABLED kill switch (off by default).
- Stop CheckExpectedStrategy from heap-allocating its variadic slice in lsmkv.
- Resume interrupted strips from the recorded pending set in drop-vector-index.
- Remove flaky TestReadSnapshotBufferAllocation.
- Size hashbeat digest buffers by set count, not leaf count in async replication.
- Read the dimensions bucket once per usage sweep.
- Warm the version map in the background at startup in hfresh.
- Report the tenant's pre-freeze status on an aborted freeze.
- Unmarshal namespace snapshot outside of lock.
- Size the roaringsetrange pread read buffer from the segment payload.
- Skip vectorizing named vectors whose index is mid-drop in modules.
- Fix flaky teardown in async replication acceptance suites.
- Report one error per object when a shard refuses a batch.
- Move `st.trackDBLoadProgress` inside `st.reloadDBFromSchema`.
- Backport #12079 and #12127 to stable/v1.37.
- Gate tenant actions by namespaces.
- Fix testcontainer endpoint + docstring.
- Add plumbing for namespace exister.
- Keep the geo vector cache across deletion cycles.
- Fix non-compiling test.
- Don't dereference nil target combination in parseNearVec in grpc.
- Serve a failed backup's reason from the participant status.
- Keep error type through the objects manager.
- Read only the geo property when resolving a coordinate.
- Surface root-prefilter skips in asyncReplicationStatus.
- Targeted replace scan with newest-wins visibility in lsmkv.
- Keep the parked pread buffer on sequential replace cursor scans.
- Complete updateIndexTenants when one tenant fails.
- Drop per-cycle allocations from the idle compaction path.
- Read targeted-scan ranges straight from the file in lsmkv.
- Parse replace nodes without allocating.
- Fixes bugs segment group tmp file recovery.
- Include GEO HNSW index in backups.
- Pin replacement replicas to a namespace's home node.
- Treat a non-positive vector cache maxSize as unbounded.
- Hold the posting lock during version map warmup in hfresh.
- Count occupied slots, and add PreloadIfAbsent in cache.
- Concurrently prefill geo caches using existing prefiller.
- Treat an unrecognized task status as in-flight in dtm.
- Bound vector reads by their declared segment in storobj.
- Fix Geo property bugs.
- Don't let SIGPIPE break the gh escape-sequence feature.
Affected Symbols
weaviate/weaviate/pull/12256weaviate/weaviate/pull/12468weaviate/weaviate/pull/12469weaviate/weaviate/pull/12381weaviate/weaviate/pull/12467weaviate/weaviate/pull/12462weaviate/weaviate/pull/12107weaviate/weaviate/pull/12108weaviate/weaviate/pull/12466weaviate/weaviate/pull/12478weaviate/weaviate/pull/12420weaviate/weaviate/pull/12477weaviate/weaviate/pull/12463weaviate/weaviate/pull/12487weaviate/weaviate/pull/12490weaviate/weaviate/pull/12489weaviate/weaviate/pull/12491weaviate/weaviate/pull/12494weaviate/weaviate/pull/12442weaviate/weaviate/pull/12493weaviate/weaviate/pull/12481weaviate/weaviate/pull/12503weaviate/weaviate/pull/12504weaviate/weaviate/pull/12508weaviate/weaviate/pull/12506weaviate/weaviate/pull/12499weaviate/weaviate/pull/12498weaviate/weaviate/pull/12322weaviate/weaviate/pull/12520weaviate/weaviate/pull/12447weaviate/weaviate/pull/12519weaviate/weaviate/pull/12524weaviate/weaviate/pull/12547weaviate/weaviate/pull/12513weaviate/weaviate/pull/12540weaviate/weaviate/pull/12541weaviate/weaviate/pull/12557weaviate/weaviate/pull/12562weaviate/weaviate/pull/12567weaviate/weaviate/pull/12548weaviate/weaviate/pull/12510weaviate/weaviate/pull/12564weaviate/weaviate/pull/12566weaviate/weaviate/pull/12396weaviate/weaviate/pull/12571weaviate/weaviate/pull/12507weaviate/weaviate/pull/12561weaviate/weaviate/pull/12592weaviate/weaviate/pull/12558weaviate/weaviate/pull/12458weaviate/weaviate/pull/12584weaviate/weaviate/pull/12554weaviate/weaviate/pull/12586weaviate/weaviate/pull/12612weaviate/weaviate/pull/12593weaviate/weaviate/pull/12583weaviate/weaviate/pull/12549weaviate/weaviate/pull/12594weaviate/weaviate/pull/12616weaviate/weaviate/pull/12245weaviate/weaviate/pull/12246weaviate/weaviate/pull/12248weaviate/weaviate/pull/12249
⚡ Deprecations
- The non-hardlink backup fallback is deprecated and will be removed in v1.40.