v1.37.12
📦 weaviateView on GitHub →
🐛 44 fixes🔧 16 symbols
Summary
This release focuses heavily on stability, performance, and bug fixes across various components including HNSW, replication, BM25, and the queueing system. Key improvements include better cgroup v2 support and numerous race condition fixes.
🐛 Bug Fixes
- Fixed HNSW maintenance flag leak.
- Implemented cgroup v2 support by using automaxprocs to set GOMAXPROCS.
- Fixed HNSW search entrypoint prerequisites (though this was later reverted).
- Returned HTTP 500 instead of nil Responder on getGroups controller error.
- Fixed HNSW repair global entrypoint (though this was later reverted).
- Retried Go modules downloads in CI.
- Increased hfresh searchProbe default to 256.
- Fixed metric name typo.
- Improved performance by sharing one zstd encoder in REST client instead of using sync.Pool.
- Improved performance by allocating propagation buffers per-hashBeat, not per-range in async replication.
- Optimized cycle manager for large MT collections.
- Made halt-for-transfer inactivity monitor race-free.
- Added additional validation on PQ query vector length.
- Fixed collection issue in incremental backups.
- Fixed quantizer initialization race in hfresh.
- Fixed RBAC class-getter memo key mismatch in gRPC service.
- Resolved class lookup to happen only once on the gRPC layer.
- Narrowed traverser single-class reads to use a class getter.
- Implemented recovery from corrupt chunk headers in the queue instead of failing to load.
- Added percentage of eager shards loaded to raft waiting for database to restore log.
- Added "weaviate_" prefix to a missed metric.
- Split go-client-group-2 CI tests into group-2 (usage) and group-3.
- Deduplicated duplicate properties in BM25 (last boost wins).
- Propagated combineResults error in BM25 (previously resulted in silent empty results).
- Replaced per-shard jitter with bounded concurrent shard readers for performance.
- Fixed passing k1/b in the correct order when flushing LSMKV block-max impacts.
- Improved performance in async replication by using batched hashtree-root pre-filter for many-tenant clusters.
- Hoisted hashtree-init wait out of RLock in async replication merge paths.
- Prevented TimeBased repair from clobbering a newer local write in async replication.
- Avoided nil-pointer dereference in read-repair when a live winner's refetch fails.
- Salvaged and quarantined torn sealed chunks in the queue.
- Reused consistent view for fetches of multiple objects.
- Validated queue chunk record count and length against file size.
- Implemented back off on recoverable task errors and contained task/dispatch panics in the queue.
- Improved BM25 performance by approximating object count for IDF and reusing query stats on block-max fallback.
- Serialized hashtree rebuild against shard shutdown in async replication.
- Deregistered under the write lock and kept replication on while overrides are active in async replication.
- Closed hashtree-init channel on early goroutine exit to unblock parked merges in async replication.
- Applied propertyBoost to WAND pivot and block-impact bounds in BM25.
- Repaired REST root-prefilter JSON and bounded request size in async replication.
- Bounded halt-for-transfer backup preparation.
- Fixed geo queue backup preparation timeout.
- Hardened async-replication and replica read/write paths.
- Guarded nil logger in GetConsistentView slow-lock warning for LSMKV.