milvus: [Bug]: querynode crash
Is there an existing issue for this?
- I have searched the existing issues
Environment
- Milvus version:master
- Deployment mode(standalone or cluster): cluster
- SDK version(e.g. pymilvus v2.0.0rc2): pymilvus v2.0.1
- OS(Ubuntu or CentOS): CentOS
- CPU/Memory: 32Cores/192GB
- GPU:
- Others:
Current Behavior
one querynode crash
Expected Behavior
querynode running healthily
Steps To Reproduce
No response
Milvus Log
Anything else?
No response
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 24 (24 by maintainers)
Commits related to this issue
- Filter sealed segments - Remove FilterThreshold in DataNode - Alter filter logic in flowgraph DDNode See also: #17943 Signed-off-by: yangxuan <xuan.yang@zilliz.com> — committed to XuanYang-cn/milvus by XuanYang-cn 2 years ago
- Filter sealed segments - Remove FilterThreshold in DataNode - Alter filter logic in flowgraph DDNode See also: #17943 Signed-off-by: yangxuan <xuan.yang@zilliz.com> — committed to XuanYang-cn/milvus by XuanYang-cn 2 years ago
- Filter sealed segments - Remove FilterThreshold in DataNode - Alter filter logic in flowgraph DDNode See also: #17943 Signed-off-by: yangxuan <xuan.yang@zilliz.com> — committed to XuanYang-cn/milvus by XuanYang-cn 2 years ago
- Filter sealed segments - Remove FilterThreshold in DataNode - Alter filter logic in flowgraph DDNode See also: #17943 Signed-off-by: yangxuan <xuan.yang@zilliz.com> — committed to XuanYang-cn/milvus by XuanYang-cn 2 years ago
- Filter sealed segments (#18065) - Remove FilterThreshold in DataNode - Alter filter logic in flowgraph DDNode See also: #17943 Signed-off-by: yangxuan <xuan.yang@zilliz.com> — committed to milvus-io/milvus by XuanYang-cn 2 years ago
- Filter sealed segments (#18147) - Remove FilterThreshold in DataNode - Alter filter logic in flowgraph DDNode See also: #17943 Signed-off-by: yangxuan <xuan.yang@zilliz.com> — committed to milvus-io/milvus by XuanYang-cn 2 years ago
I took a look at the log and here’s what happened:
More details:
Here’s where insertMsg are supposed to get filtered to avoid double consuming: https://github.com/milvus-io/milvus/blob/6954a5ba3e91bd39d42da4ff5e0483c091eb283f/internal/datanode/flow_graph_dd_node.go#L145-L153
where FilterThreshold is the start time of DataNode and is set during DataNode Start(): https://github.com/milvus-io/milvus/blob/f0b036a35ae17ada3101eebc6a200b5f621b7e7e/internal/datanode/data_node.go#L488
In the case of two or more living DataNodes.
msg.EndTs() < FilterThresholdwill always be false and nothing will get filtered.To make things right, we need to give
FilterThresholda proper value. Shall it be the timestamp of each individual channel watch operation instead of DataNode’s start time?Yep, SaveBinlog path should be idempotent. And we shouldn’t use FilterThreshold, but filter by each segment