Release date: 2022-01-25
<h3 id="v2.0.0">Compatibility</h3>
<table class="version">
<thead>
<tr>
<th>Milvus version</th>
<th>Python SDK version</th>
<th>Java SDK version</th>
<th>Go SDK version</th>
<th>Node.js SDK version</th>
</tr>
</thead>
<tbody>
<tr>
<td>2.0.0</td>
<td>2.0.0</td>
<td>2.0.2</td>
<td>2.0.0</td>
<td>2.0.0</td>
</tr>
</tbody>
</table>
We are excited to announce the general release of Milvus 2.0 and it is now considered as production ready. Without changing the existing functionality released in the PreGA release, we fixed several critical bugs reported by users. We sincerely encourage all users to upgrade your Milvus to 2.0 release for better stability and performance.
<h3 id="v2.0.0">Improvements</h3>
- Changes the default consistency level to Bounded Staleness:
If consistency level Strong is adopted during a search, Milvus waits until data is synchronized before the search, thus spending longer even on a small dataset. Under the the default consistency level of Bounded Staleness, newly inserted data remain invisible for a could of seconds before they can be retrieved. For more information, see [Guarantee Timestamp in Search Requests](https://github.com/milvus-io/milvus/blob/master/docs/developer_guides/how-guarantee-ts-works.md).
- [15223](https://github.com/milvus-io/milvus/pull/15223) Makes query nodes send search or query results by RPC.
<h3 id="v2.0.0">Bug fixes</h3>
- Writing blocked by message storage quota exceed exception:
- [15221](https://github.com/milvus-io/milvus/pull/15221) Unsubscribes channel when closing Pulsar consumer.
- [15230](https://github.com/milvus-io/milvus/pull/15230) Unsubscribes channel after query node is down.
- [15284](https://github.com/milvus-io/milvus/pull/15284) Adds retry logic when pulsar consumer unsubscribes channel.
- [15353](https://github.com/milvus-io/milvus/pull/15353) Unsubscribes topic in data coord.
- Resource leakage:
- [15303](https://github.com/milvus-io/milvus/pull/15303) Cleans flow graph if failed to `watchChannel`.
- [15237](https://github.com/milvus-io/milvus/pull/15237) Calls for releasing memory in case that error occurs.
- [15013](https://github.com/milvus-io/milvus/pull/15013) Closes payload writer when error occurs.
- [14630](https://github.com/milvus-io/milvus/pull/14630) Checks leakage of index CGO object.
- [14543](https://github.com/milvus-io/milvus/pull/14543) Fixes that Pulsar reader is not close.
- [15068](https://github.com/milvus-io/milvus/pull/15068) Fixes that file is not close when `ReadAll` returns error in local chunk manager.
- [15305](https://github.com/milvus-io/milvus/pull/15305) Fixes query node search exceptions will cause memory leak.
- High memory usage:
- [15196](https://github.com/milvus-io/milvus/pull/15196) Releases memory to OS after index is built.
- [15180](https://github.com/milvus-io/milvus/pull/15180) Refactors flush manager injection to reduce goroutine number.
- [15100](https://github.com/milvus-io/milvus/pull/15100) Fixes storage memory leak caused by `runtime.SetFinalizer`.
- Cluster hang:
- [15181](https://github.com/milvus-io/milvus/pull/15181) Stops handoff if the segment has been compacted.
- [15189](https://github.com/milvus-io/milvus/pull/15189) Retains `nodeInfo` when query coord panic at `loadBalanceTask`.
- [15250](https://github.com/milvus-io/milvus/pull/15250) Fixes `collectResultLoop` hang after search timeout.
- [15102](https://github.com/milvus-io/milvus/pull/15102) Adds flow graph manager and event manager.
- [15161](https://github.com/milvus-io/milvus/pull/15161) Panic when recover query node failed.
- [15347](https://github.com/milvus-io/milvus/pull/15347) Makes index node panic when failed to save meta to `MetaKV`.
- [15343](https://github.com/milvus-io/milvus/pull/15343) Fixes Pulsar client bug.
- [15370](https://github.com/milvus-io/milvus/pull/15370) Releases collection first when drop collection.
- Incorrect returned data:
- [15177](https://github.com/milvus-io/milvus/pull/15177) Removes global sealed segments in historical.
- [14758](https://github.com/milvus-io/milvus/pull/14758) Fixes that deleted data returned when handoff is done for the segment.
<h3 id="v2.0.0">Known issues</h3>
- [14077](https://github.com/milvus-io/milvus/issues/14077) Core dump happens under certain workload and it is still under reproducing.
Solution: The system will be recovered automatically.
- [15283](https://github.com/milvus-io/milvus/issues/15283) Cluster fails to recover because Pulsar's failure to create consumer [Pulsar #13920](https://github.com/apache/pulsar/issues/13920).
Solution: Restart pulsar cluster.
- The default dependency Pulsar use old log4j2 version and contains security vulnerability.
Solution: Upgrade pulsar dependency to 2.8.2. We will soon release a minor version to upgrade Pulsar to newer releases.
- [15371](https://github.com/milvus-io/milvus/issues/15371) Data coord may fail to cleanup channel subscription if balance and node crash happens at same time.
Solution: Remove the channel subscription with Pulsar admin.
v2.0.0-pre-ga
v2.0.0-PreGA
Release date: 2021-12-31
<h3 id="v2.0.0-PreGA">Compatibility</h3>
<table class="version">
<thead>
<tr>
<th>Milvus version</th>
<th>Python SDK version</th>
<th>Java SDK version</th>
<th>Go SDK version</th>
<th>Node.js SDK version</th>
</tr>
</thead>
<tbody>
<tr>
<td>2.0.0-PreGA</td>
<td>2.0.0rc9</td>
<td>2.0.0</td>
<td>Coming soon</td>
<td>1.0.20</td>
</tr>
</tbody>
</table>
Milvus 2.0.0-PreGA is the preview release of Milvus 2.0.0-GA. It now supports entity deletion by primary key and data compaction to purge deleted data. We also introduce a load balancing mechanism into Milvus to distribute the memory usage of each query node evenly. Some critical issues are fixed in this release, including cleanup of dropped collection data, wrong distance calculation of Jaccard distance, and several bugs that cause system hang and memory leakage.
It should be noted that Milvus 2.0.0-PreGA is NOT compatible with previous versions of Milvus 2.0.0 because of some changes made to data codec format and RocksMQ data format.
<h3 id="v2.0.0-PreGA">Features</h3>
- Deleting entity: Milvus now supports deleting entities through primary keys. Whereas Milvus relies on append-only storage, it only supports logical deletion, id est, Milvus inserts a deletion mark on the entities to cover actual data so that no search or query will return the marked entities. Therefore, it should be noted that overusing deletion may cause search performance plummeting and storage usage surging. See [Delete entities](delete_data.md) for more instruction.
- Compaction: Compaction mechanism purges the deleted or expired entities in binlogs to save storage space. It is a background task that is triggered by data coord and executed by data node.
- Automatic Loadbalance/Handoff [9481](https://github.com/milvus-io/milvus/issues/9481):Loadbalance mechanism distributes segments evenly across query nodes to balance the memory usage of the cluster. It can be triggered either automatically or by users. Handoff mechanism refers to that, when a growing segment is sealed, query node waits until the segment is built with index by index node and then loads the segment into memory for search or query.
<h3 id="v2.0.0-PreGA">Improvements</h3>
- [12199](https://github.com/milvus-io/milvus/pull/12199) Parallelizes executions between segments to improve the search performance.
- [11373](https://github.com/milvus-io/milvus/pull/11373) Allows batch consumption of messages in RocksMQ internal loop to improve the system efficiency.
- [11665](https://github.com/milvus-io/milvus/pull/11665) Postpones the execution of handoff until index creation is completed.
<h3 id="v2.0.0-PreGA">Bug fixes</h3>
- Data is not cleared on etcd, Pulsar, and MinIO when a collection is dropped:
- [12191](https://github.com/milvus-io/milvus/pull/12191) Clears the metadata of the dropped segment on etcd.
- [11554](https://github.com/milvus-io/milvus/pull/11554) Adds garbage collector for data coord.
- [11552](https://github.com/milvus-io/milvus/pull/11552) Completes procedure of dropping collection in data node.
- [12227](https://github.com/milvus-io/milvus/pull/12227) Removes all index when dropping collection.
- [11436](https://github.com/milvus-io/milvus/pull/11436) Changes the default retentionSizeInMB to 8192 (8GB).
- [11901](https://github.com/milvus-io/milvus/pull/11901) Wrong distances calculation caused by properties of different metric types.
- [12511](https://github.com/milvus-io/milvus/pull/12511) Wrong similarity correlation caused by properties of different metric types.
- [12225](https://github.com/milvus-io/milvus/pull/12225) RocksMQ produce hang when do search repeatedly
- [12255](https://github.com/milvus-io/milvus/pull/12255) RocksMQ server does not close when standalone exits.
- [12281](https://github.com/milvus-io/milvus/pull/12281) Error when dropping alias.
- [11769](https://github.com/milvus-io/milvus/pull/11769) Update serviceableTime incorrectly.
- [11325](https://github.com/milvus-io/milvus/pull/11325) Panic when reducing search results.
- [11248](https://github.com/milvus-io/milvus/pull/11248) Parameter guarantee_timestamp is not working.
<h3 id="v2.0.0-PreGA">Other Enhancements</h3>
- [12351](https://github.com/milvus-io/milvus/pull/12351) Changes proxy default RPC transfer limitation.
- [12055](https://github.com/milvus-io/milvus/pull/12055) Reduces memory cost when loading from MinIO.
- [12248](https://github.com/milvus-io/milvus/pull/12248) Supports more deployment metrics.
- [11247](https://github.com/milvus-io/milvus/pull/11247) Adds getNodeInfoByID and getSegmentInfoByNode function for cluster.
- [11181](https://github.com/milvus-io/milvus/pull/11181) Refactors segment allocate policy on query coord.