mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-06 17:18:35 +08:00
fix: querynode upgrade from 2.5 get stucked (#42502)
issue: #42492 - consider the old RO query node (not streaming node) when balancing channel. - querynode graceful stop can be done if there's only L0 segment exists. Signed-off-by: chyezh <chyezh@outlook.com>
This commit is contained in:
parent
b76478378a
commit
508264f953
@ -499,6 +499,7 @@ func (b *MultiTargetBalancer) balanceChannels(ctx context.Context, br *balanceRe
|
||||
var rwNodes, roNodes []int64
|
||||
if streamingutil.IsStreamingServiceEnabled() {
|
||||
rwNodes, roNodes = replica.GetRWSQNodes(), replica.GetROSQNodes()
|
||||
roNodes = append(roNodes, replica.GetRONodes()...)
|
||||
} else {
|
||||
rwNodes, roNodes = replica.GetRWNodes(), replica.GetRONodes()
|
||||
}
|
||||
|
||||
@ -209,6 +209,7 @@ func (b *RowCountBasedBalancer) balanceChannels(ctx context.Context, br *balance
|
||||
var rwNodes, roNodes []int64
|
||||
if streamingutil.IsStreamingServiceEnabled() {
|
||||
rwNodes, roNodes = replica.GetRWSQNodes(), replica.GetROSQNodes()
|
||||
roNodes = append(roNodes, replica.GetRONodes()...)
|
||||
} else {
|
||||
rwNodes, roNodes = replica.GetRWNodes(), replica.GetRONodes()
|
||||
}
|
||||
|
||||
@ -481,6 +481,7 @@ func (b *ScoreBasedBalancer) balanceChannels(ctx context.Context, br *balanceRep
|
||||
var roNodes []int64
|
||||
if streamingutil.IsStreamingServiceEnabled() {
|
||||
rwNodes, roNodes = replica.GetRWSQNodes(), replica.GetROSQNodes()
|
||||
roNodes = append(roNodes, replica.GetRONodes()...)
|
||||
} else {
|
||||
rwNodes, roNodes = replica.GetRWNodes(), replica.GetRONodes()
|
||||
}
|
||||
|
||||
@ -140,3 +140,10 @@ func WithLevel(level datapb.SegmentLevel) SegmentFilter {
|
||||
return segment.Level() == level
|
||||
})
|
||||
}
|
||||
|
||||
// WithoutLevel is the segment filter for without segment level.
|
||||
func WithoutLevel(level datapb.SegmentLevel) SegmentFilter {
|
||||
return SegmentFilterFunc(func(segment Segment) bool {
|
||||
return segment.Level() != level
|
||||
})
|
||||
}
|
||||
|
||||
@ -70,6 +70,7 @@ import (
|
||||
"github.com/milvus-io/milvus/pkg/v2/log"
|
||||
"github.com/milvus-io/milvus/pkg/v2/metrics"
|
||||
"github.com/milvus-io/milvus/pkg/v2/mq/msgdispatcher"
|
||||
"github.com/milvus-io/milvus/pkg/v2/proto/datapb"
|
||||
"github.com/milvus-io/milvus/pkg/v2/util/expr"
|
||||
"github.com/milvus-io/milvus/pkg/v2/util/hardware"
|
||||
"github.com/milvus-io/milvus/pkg/v2/util/lifetime"
|
||||
@ -555,8 +556,8 @@ func (node *QueryNode) Stop() error {
|
||||
channelNum = 0
|
||||
)
|
||||
if node.manager != nil {
|
||||
sealedSegments = node.manager.Segment.GetBy(segments.WithType(segments.SegmentTypeSealed))
|
||||
growingSegments = node.manager.Segment.GetBy(segments.WithType(segments.SegmentTypeGrowing))
|
||||
sealedSegments = node.manager.Segment.GetBy(segments.WithType(segments.SegmentTypeSealed), segments.WithoutLevel(datapb.SegmentLevel_L0))
|
||||
growingSegments = node.manager.Segment.GetBy(segments.WithType(segments.SegmentTypeGrowing), segments.WithoutLevel(datapb.SegmentLevel_L0))
|
||||
}
|
||||
if node.pipelineManager != nil {
|
||||
channelNum = node.pipelineManager.Num()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user