Releases: milvus-io/milvus
milvus-2.4.10
v2.4.10
Release Date: August 30, 2024
Milvus version | Python SDK version | Java SDK version | Node.js SDK version |
---|---|---|---|
2.4.10 | 2.4.6 | 2.4.3 | 2.4.6 |
Milvus 2.4.10 introduces significant improvements in functionality and stability. Key features include support for upsert operations on AutoID-enabled collections, partial collection loading capabilities, and various memory-mapped (MMAP) configurations to optimize memory usage. This release also addresses several bugs causing panics, core dumps, and resource leaks. We recommend upgrading to take full advantage of these improvements.
Features
- Upsert with Auto ID: Support for upsert operations with automatic ID generation (#34633)
- Field Partial Load Collection [Beta Preview]: Allows loading specific fields of a collection (#35696)
- RBAC Enhancements:
- Improved MMAP Configuration: More general configuration options to control MMAP behavior (#35609)
- Database Access Restrictions: New properties to restrict read access to databases (#35754)
Bug fixes
- Fixed Arrow Go client don't return error issue (#35820)
- Corrected inaccurate rate limiting (#35700)
- Resolved proxy panic after import-related API failures (#35559)
- Fixed potential mistaken deletions during GC channel checkpoints (#35708)
- Addressed panic due to empty candidate import segments (#35674)
- Corrected mmap memory deallocation (#35726)
- Ensured proper channel watching for upgrades from 2.2 to 2.4 (#35695)
- Fixed DataNode unwatching channel release function (#35657)
- Corrected partition count in RootCoord metadata (#35601)
- Resolved issues with dynamic config updates for certain parameters (#35637)
Improvements
Performance
- Optimized retrieval on dynamic fields (#35602)
- Improved bitset performance for AVX512 (#35480)
- Re-read value after
once
initialization for better efficiency (#35643)
Rolling upgrade improvements
- Marked query node as read-only after suspended (#35586)
- Prevented coexistence of old coordinator with new node/proxy (#35760)
Others
- Optimized Milvus core building process (#35660)
- Updated to protobuf-go v2 (#35555)
- Enhanced tracing with hex string encoding for traceid and spanid (#35568)
- Added hit segment number metrics for query hook (#35619)
- Improved compatibility with old SDK for configure load param feature (#35573)
- Added support for HTTP v1/v2 throttling (#35504)
- Fixed index memory estimation (#35670)
- Ability to write multiple segments in mix compactor to avoid large segment generation (#35648)
milvus-2.4.9
v2.4.9
Release Date: August 20, 2024
Milvus version | Python SDK version | Java SDK version | Node.js SDK version |
---|---|---|---|
2.4.9 | 2.4.5 | 2.4.3 | 2.4.4 |
Milvus v2.4.9 addresses a critical issue which could return results less than limit (topk) in some corner cases and includes several key improvements to enhance the performance and usability of the platform.
Critical fixes
- Excluded l0 segment from readable snapshot (#35510).
Improvements
- Removed duplicated schema helper creation in the proxy (#35502).
- Added support for compiling Milvus on Ubuntu 20.04 (#35457).
- Optimized the use of locks and avoided double flush clustering buffer writer (#35490).
- Removed the invalid log (#35473).
- Added a clustering compaction user guide doc (#35428).
- Added support for dynamic fields in the schema helper (#35469).
- Added the msgchannel section in the generated YAML (#35466).
milvus-2.4.8
v2.4.8
Release Date: August 14, 2024
Milvus version | Python SDK version | Java SDK version | Node.js SDK version |
---|---|---|---|
2.4.8 | 2.4.5 | 2.4.3 | 2.4.4 |
Milvus 2.4.8 introduced several significant improvements to the system's performance and stability. The most notable feature was the implementation of clustering compaction, a mechanism that enhances search and query efficiency by redistributing data in large collections based on a designated clustering key, reducing the amount of data scanned. Compaction was also decoupled from the shard DataNode, allowing any DataNode to perform compaction independently, which improved fault tolerance, stability, performance, and scalability. Additionally, the interface between the Go and C++ components was refactored to use asynchronous CGO calls, addressing issues like session timeouts, while several other performance optimizations were made based on profiling. The application dependencies were also updated to address known security vulnerabilities. Moreover, this release also includes numerous performance optimizations and critical bug fixes.
Features
- Implemented clustering compaction, allowing data to be redistributed based on a designated clustering key to enhance query efficiency (#34326), (#34363).
Improvements
- Implemented asynchronous search and retrieval capabilities in CGO. (#34200)
- Separated the compaction process from the Shard DataNode to improve system modularity. (#34157)
- Added support for client pooling in QueryNode within the proxy/delegator to enhance performance. (#35195)
- Integrated Sonic to minimize CPU overhead during JSON marshaling and unmarshaling in Gin and RestfulV1 handlers. (#35018)
- Introduced an in-memory cache to optimize authentication result retrieval. (#35272)
- Modified the default metric type for autoindex. [#34277, #34479]
- Refactored the runtime memory format for variable columns, leading to reduced memory usage. [#34367, #35012, #35041]
- Refactored compaction processes to enable persistent data storage. (#34268)
- Enabled memory-mapped file support for growing segments, improving memory management. (#34110)
- Improved access logs by adding RESTful API support, logging consistency levels, and distinguishing between system and user errors. [#34295, #34352, #34396]
- Enabled the configuration of replica numbers and resource groups at the cluster, database, and collection levels, with support for dynamic modifications. [#34561, #33981, #35293]
- Utilized the new
range_search_k
parameter in Knowhere to speed up range searches. (#34709) - Applied blocked Bloom filters to enhance the speed of filter construction and querying. [#34377, #34922]
- Memory Usage Improvements:
- Pre-allocated space for DataNode insert buffers. (#34205)
- Pre-allocated
FieldData
for Reduce operations. (#34254) - Released records in delete codec to prevent memory leaks. (#34506)
- Controlled concurrency level of the disk file manager during file loading. (#35282)
- Optimized Go runtime garbage collection logic for timely memory release. (#34950)
- Implemented a new seal policy for growing segments. (#34779)
- DataCoord Enhancements:
- Load Balancing Algorithm Improvements:
- Reduced the memory overload factor on the delegator. (#35164)
- Allocated fixed memory size for the delegator. (#34600)
- Avoided excessive allocation of segments and channels for new query nodes. (#34245)
- Reduced the number of tasks per scheduling cycle by Query Coordinator while increasing scheduling frequency. (#34987)
- Enhanced channel balancing algorithm on the DataNode. (#35033)
- Expanded System Metrics: Added new metrics across various components to monitor specific aspects including:
Changes
-
For open-source users, this version changes the metric types in AutoIndex for
FloatVector
andBinaryVector
toCosine
andHamming
, respectively. -
Fixed Third-Party Dependency Versions:
- This release introduces fixed versions for certain third-party dependency libraries, significantly enhancing Milvus's software supply chain management.
- By isolating the project from upstream changes, it safeguards daily builds from potential disruptions.
- The update ensures stability by exclusively hosting validated C++ third-party packages on JFrog Cloud and utilizing Conan Recipe Revisions (RREV).
- This approach mitigates the risk of breaking changes from updates in ConanCenter.
- Developers using Ubuntu 22.04 will benefit immediately from these changes. However, developers on other operating systems may need to upgrade their
glibc
version to avoid compatibility issues.
Critical bug fixes
- Fixed an issue where deletion data was lost due to segments being omitted during L0 compaction. [#33980, #34363]
- Rectified a problem where delete messages failed to be forwarded due to incorrect data scope handling. (#35313)
- Resolved a SIGBUS exception that occurred due to incorrect usage of
mmap
. [#34455, #34530] - Fixed crashes caused by illegal search expressions. (#35307)
- Corrected an issue where DataNode watch failed due to an incorrect timeout setting in the watch context. (#35017)
Bug fixes
- Addressed security vulnerabilities by upgrading certain dependencies. [#33927, #34693]
- Fixed a parsing error triggered by excessively long expressions. (#34957)
- Resolved a memory leak that occurred during query plan parsing. (#34932)
- Fixed an issue where dynamic log level modifications were not taking effect. (#34777)
- Resolved an issue where group by queries on growing data failed due to uninitialized segment offsets. (#34750)
- Corrected the setting of search parameters when using the Knowhere iterator. (#34732)
- Revised the logic for checking the status of the partition load. (#34305)
- Fixed an issue where privilege cache updates failed due to unhandled request errors. (#34697)
- Resolved a failure in loaded collection recovery after QueryCoord restarted. (#35211)
- Fixed a...
milvus-2.3.21
v2.3.21
Release data: August 14, 2024
Milvus version | Python SDK version | Java SDK version | Go SDK version | Node.js SDK version |
---|---|---|---|---|
2.3.21 | 2.3.7 | 2.3.6 | 2.3.6 | 2.3.5 |
Miluvs v2.3.21 addresses a critical bug in data deletion (#35390) and introduces some improvements in metrics and performance.
Improvements
- Enhanced data deletion process by modifying the delegator's delete buffer handling (#35074)
- Added metrics to track disk quota usage (#35320)
- Reduced delegator memory usage by adjusting the overloaded factor to 0.1 (#35165)
- Improved health check by skipping manually stopped components (#35122)
- Added metric to record maxinsertrate and querynodememoryhighwaterlevel (#35193)
- Upgraded the Conan version (#35217)
- Changed the default metric type for autoindex (#34328)
- Sped up the datacoord gc quit process (#35057)
- Avoided panic due to nil schema (#35065)
- Reduced duplicate primary keys in the segcore component (#35291)
- Tracked the number of times Milvus enters a force-deny-writing state (#34990)
Bug fixes
- Resolved an issue with the BloomFilter returning false negatives when the statslog contained multiple K values, which could occur when a delete operation failed to apply (#35390)
- Enabled a limiter for RESTful server (#35354)
- Added a retry mechanism to avoid getting incomplete query results (#35061)
- Fixed issues with delete-by-expression operations failing during retry progress (#35421)
- Addressed a problem where the datanode binlog size metrics included dropped segments (#35420)
- Resolved comparison operations between incompatible operands (#35308)
- Fixed an issue where the datanode could not watch the channel (#35136)
- Addressed a deadlock issue on compaction when stopping the datanode (#35199)
milvus-2.3.20
v2.3.20
Release data: July 25, 2024
Milvus version | Python SDK version | Java SDK version | Go SDK version | Node.js SDK version |
---|---|---|---|---|
2.3.20 | 2.3.7 | 2.3.6 | 2.3.6 | 2.3.5 |
Milvus v2.3.20 brings several important bug fixes focused on enhancing segment management. This release also includes an upgrade to Go version 1.21, which allows the pprof tool to capture C++ code profiles, significantly aiding in diagnosing Milvus. Additionally, the Knowhere version has been updated to v2.2.7, enabling Milvus to be compiled with glibc versions ≤ 2.30. A new metric has been introduced to record the duration that requests wait in the proxy queue, improving Milvus's observability.
Features
- Added a metric to record the duration of requests waiting in the proxy queue (#34791).
Improvements
Bug fixes
- Initialized the hook when creating the proxy object (#34936).
- Fixed a parsing issue for the plan proto for search types (#34945).
- Resolved an issue where segments could bounce between delegator and worker (#34889).
- Prevented the generation of reduce channel tasks before channel balancing is complete (#34721).
- Avoided segment shortages caused by deduplicated segment tasks (#34882).
- Discarded compaction plans when closing DataSyncService (#34737).
- Fixed a typo in the compatible ascending index (#34712).
milvus-2.4.6
v2.4.6
Release date: July 16, 2024
Milvus version | Python SDK version | Java SDK version | Node.js SDK version |
---|---|---|---|
2.4.6 | 2.4.4 | 2.4.2 | 2.4.4 |
Milvus v2.4.6 is a bug-fix release that addresses critical issues such as panics, memory leaks, and data loss during deletions. It also introduces several optimizations, including enhancements to monitoring metrics, upgrading the Go version to 1.21, and improving the user experience for RESTful count(*) queries.
Improvements
- Enhanced the user-friendliness of RESTful API queries (#34444).
- Upgraded the Go version from 1.20 to 1.21 (#33940).
- Optimized the histogram metric bucket for finer granularity in bucketing (#34592).
Bug fixes
- Fixed an issue where the GetReplicas API returned a nil status (#34019).
- Corrected a problem where queries could return deleted records (#34502).
- Resolved an issue where IndexNode would get stuck during stopping due to incorrect lifetime control (#34559).
- Fixed a memory leak of primary key oracle objects when a worker is offline (#34020).
- Corrected ChannelManagerImplV2 to notify the correct Node, addressing parameter capture issues in loop closure (#34004).
- Fixed a read-write data race in ImportTask segmentsInfo by implementing a deep copy (#34126).
- Corrected version information for the "legacyVersionWithoutRPCWatch" configuration option to prevent errors during rolling upgrades (#34185).
- Fixed the metric for the number of partitions loaded (#34195).
- Passed the
otlpSecure
config when setting up segcore tracing (#34210). - Fixed an issue where DataCoord's properties were overwritten by mistake (#34240).
- Resolved a data loss issue caused by erroneously merging two newly created message streams (#34563).
- Fixed a panic caused by msgstream trying to consume an invalid pchannel (#34230).
- Addressed an issue where imports could generate orphaned files (#34071).
- Fixed incomplete query results due to duplicate primary keys in a segment (#34302).
- Resolved an issue of missing sealed segments in L0 compaction (#34566).
- Fixed the problem of dirty data in the channel-cp meta generated after garbage collection (#34609).
- Corrected the metrics where database_num was 0 after restarting RootCoord (#34010).
- Fixed a memory leak in SegmentManager in DataCoord by removing flushed segments generated through import (#34652).
- Ensured compressBinlog to fill binlogs' logID after DataCoord restarts, ensuring proper reload from KV (#34064).
milvus-2.3.19
v2.3.19
Release date: July 15, 2024
Milvus version | Python SDK version | Java SDK version | Go SDK version | Node.js SDK version |
---|---|---|---|---|
2.3.19 | 2.3.7 | 2.3.6 | 2.3.6 | 2.3.5 |
Milvus v2.3.19 introduces significant improvements and bug fixes to enhance memory management, error handling, and query performance. This release continues to bolster the robustness and functionality of Milvus, ensuring optimal performance and user experience.
Improvements
- Preserved fixed-size memory in delegator node for growing segments (#34602).
- Refined Prometheus Buckets at different scales to improve monitoring precision (#34627).
- Avoided assigning too many segments/channels to new QueryNode, ensuring balanced load distribution (#34461).
- Provided clearer error messages when the string/varchar exceeded its max length (#34324, #34034).
- Prevented memory slice increase during queries, optimizing memory usage (#34256).
- Sped up the loading process for small collections, reducing latency (#33863).
Bug fixes
- Fixed error message when field name is invalid, improving user feedback (#33901).
- Ensured Segment Manager filters flushed segments correctly during import (#34650).
- Made knowhere-build-pool-size configurable on QueryNode for better resource management (#34647).
- Eliminated unnecessary vchannels' merge when curTS is 0, optimizing performance (#34626).
- Fixed issue where IndexNode couldn't be stopped due to a missing lifetime end (#34560).
- Enhanced RESTful API query to be more user-friendly (#34447).
- Checked load state of all partitions instead of just the first one, ensuring completeness (#34321).
- Implemented singleflight for segcore chunkcache to avoid redundant operations (#34284).
- Broadcasted collection's new properties to DataCoord, ensuring consistency (#34147).
- DataCoord now returns checkpoint after successfully flushing segments (#34115).
- Checked nodeid wildcard when removing pkoracle, preventing potential errors (#34022).
- Ensured queries by primary key return the latest row rather than historical data, maintaining data accuracy (#34026).
milvus-2.4.5
v2.4.5
Release date: June 18, 2024
Milvus version | Python SDK version | Java SDK version | Node.js SDK version |
---|---|---|---|
2.4.5 | 2.4.4 | 2.4.1 | 2.4.3 |
The release of Milvus 2.4.5 introduces several improvements and bug fixes to enhance performance, stability, and functionality. Milvus 2.4.5 simplifies sparse, float16, and bfloat16 vector search with auto-indexing, speeds up searches, deletions, and compactions with Bloom filter optimizations, and tackles data management through faster loading times and import L0 segment support. It also introduces the sparse HNSW index for efficient high-dimensional sparse data search, enhances the RESTful API with sparse float vector support, and fixes critical bugs for better stability.
Improvements
- Added RBAC support to describe/alter database API (#33804).
- Supported building the HNSW index for sparse vectors (#33653, #33662).
- Supported building the Disk index for binary vectors (#33575).
- Supported sparse vector type on RESTful v2 (#33555).
- Enabled flush rate limiter at the collection level (#33864).
- Executed Bloom filter application in parallel to speed up segment prediction (#33793).
- Used fastjson library for unmarshaling delete logs to speed up json.Unmarshal (#33802).
- Used BatchPkExist to reduce Bloom filter function call cost (#33752).
- Sped up the loading of small collections (#33746).
- Supported importing delete data to L0 segment (#33712).
- Skipped marking compaction tasks as timed out to avoid executing the same task repeatedly (#33833).
- Handled float16 and bfloat16 vectors similarly to BinaryVector in numpy bulk insert (#33788).
- Added the includeCurrentMsg flag for the seek method (#33743).
- Added mergeInterval, targetBufSize, and maxTolerantLag of msgdispatcher to configurations (#33680).
- Improved GetVectorByID for sparse vectors (#33652).
- Removed StringPrimarykey to reduce unnecessary copy and function call costs (#33649).
- Added autoindex mapping for binary/sparse data types (#33625).
- Optimized some caches to reduce memory usage (#33560).
- Abstracted execute interface for import/preimport tasks (#33607).
- Used map PK to timestamp in buffer insert to reduce Bloom filter causes (#33582).
- Avoided redundant meta operations during import (#33519).
- Improved logs by logging better disk quota info, adding UseDefaultConsistency flag, and removing unnecessary logs (#33597, #33644, #33670).
Bug fixes
- Fixed a bug that may cause Milvus to be unable to create AutoIndex on binary and sparse vectors (#33867).
- Fixed a bug that may cause indexnode to retry creating index on invalid index parameters of all vectors (#33878).
- Fixed a bug that may cause server crashes when loads and releases happen concurrently (#33699).
- Improved cache consistency for configuration values (#33797).
- Prevented possible data loss during deletion (#33821).
- Ensured the DroppedAt field (likely deletion timestamp) is set after dropping collections (#33767).
- Fixed an issue that might have caused Milvus to handle binary vector data sizes incorrectly (#33751).
- Masked Kafka credentials from being printed in logs (#33747).
- Prevented sensitive Kafka credentials from being logged in plain text (#33694).
- Ensured Milvus can correctly import data with multiple vector fields (#33724).
- Enhanced import reliability by checking if an import job exists before starting (#33673).
- Improved handling of the sparse HNSW index (internal functionality) (#33714).
- Cleaned vector memory to avoid memory leaks (#33708).
- Ensured smoother asynchronous warmup by fixing a state lock issue (#33687).
- Addressed a bug that might have caused missing results in query iterators (#33506).
- Fixed a bug that might cause import segment size to be uneven (#33634).
- Fixed incorrect data size handling for bf16, fp16, and binary vector types (#33488).
- Improved stability by addressing potential issues with the L0 compactor (#33564).
- Ensured dynamic configuration updates are reflected correctly in the cache (#33590).
- Improved the accuracy of the RootCoordQuotaStates metric (#33601).
- Ensured accurate reporting of the number of loaded entities in metrics (#33522).
- Provided more complete information in exception logs (#33396).
- Optimized query pipeline by removing unnecessary group checker (#33485).
- Used the local storage path for a more accurate disk capacity check on the index node (#33505).
- Corrected hasMoreResult to return false when hit number is larger than the limit (#33642).
- Delayed loading Bloom filters in delegator to prevent them from being loaded repeatedly when the worker has no more memory (#33650).
milvus-2.3.18
v2.3.18
Release date: June 18, 2024
Milvus version | Python SDK version | Java SDK version | Go SDK version | Node.js SDK version |
---|---|---|---|---|
2.3.18 | 2.3.7 | 2.3.6 | 2.3.6 | 2.3.5 |
Milvus v2.3.18 includes several bug fixes and improvements to enhance query result quality and maintainability. This release also backports improvements and fixes from the 2.4 branch, which enhance control over delete data amounts (according to rate limit configuration) and increase Bloom filter processing speed. As with previous releases, this update reinforces Milvus's commitment to functionality and robustness.
Improvements
- Added RESTful APIs to trigger component stop (#33798).
- Improved delete by expression to respect delete rate limit rules according to the matched data size instead of delete request size (#33794).
- Accelerated Bloom filter processing by submitting in batch and working in parallel (#33870).
- Enabled parallel processing for
applydelete
at the segment level (#33841). - Printed
UseDefaultConsistency
parameter in read requests (#33645).
Bug fixes
- Fixed a bug where closure capture iteration variable caused delete data to fail to apply to the correct data (#33912).
- Fixed a bug where filtered results could be less than topk by upgrading Knowhere to 2.2.10 (#33930).
- Fixed a bug where insert rate was not limited when
collection.insertrate.max.mb
config was set to 0 (#33725). - Fixed a bug where old collections created before v2.2.8 could reappear and become zombies after being dropped and restarted (#33695).
- Fixed a bug where upsert latency used the wrong unit, causing abnormal metrics (#33580).
- Fixed a bug where Milvus exception info could not be passed outside of segcore (#33395).
milvus-2.4.4
v2.4.4
Release date: May 31, 2024
Milvus version | Python SDK version | Java SDK version | Node.js SDK version |
---|---|---|---|
2.4.4 | 2.4.3 | 2.4.1 | 2.4.2 |
Milvus v2.4.4 includes several critical bug fixes and improvements aimed at enhancing performance and stability. Notably, we've resolved a critical issue where bulk insert statistics logs were incorrectly garbage collected, potentially affecting data integrity. We strongly recommend all v2.4 users upgrade to this version to benefit from these fixes.
If you are using bulk insert, upgrade to v2.4.4 at the earliest opportunity for data integrity.
Critical bug fixes
- Filled stats log ID and validated its correctness (#33478)