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 (#42503)
issue: #42492 pr: #42502 - 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
a1927e22a5
commit
a55c371261
@ -140,3 +140,10 @@ func WithLevel(level datapb.SegmentLevel) SegmentFilter {
|
|||||||
return segment.Level() == level
|
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
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@ -68,6 +68,7 @@ import (
|
|||||||
"github.com/milvus-io/milvus/pkg/v2/log"
|
"github.com/milvus-io/milvus/pkg/v2/log"
|
||||||
"github.com/milvus-io/milvus/pkg/v2/metrics"
|
"github.com/milvus-io/milvus/pkg/v2/metrics"
|
||||||
"github.com/milvus-io/milvus/pkg/v2/mq/msgdispatcher"
|
"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/expr"
|
||||||
"github.com/milvus-io/milvus/pkg/v2/util/hardware"
|
"github.com/milvus-io/milvus/pkg/v2/util/hardware"
|
||||||
"github.com/milvus-io/milvus/pkg/v2/util/lifetime"
|
"github.com/milvus-io/milvus/pkg/v2/util/lifetime"
|
||||||
@ -479,12 +480,15 @@ func (node *QueryNode) Stop() error {
|
|||||||
channelNum = 0
|
channelNum = 0
|
||||||
)
|
)
|
||||||
if node.manager != nil {
|
if node.manager != nil {
|
||||||
sealedSegments = node.manager.Segment.GetBy(segments.WithType(segments.SegmentTypeSealed))
|
sealedSegments = node.manager.Segment.GetBy(segments.WithType(segments.SegmentTypeSealed), segments.WithoutLevel(datapb.SegmentLevel_L0))
|
||||||
growingSegments = node.manager.Segment.GetBy(segments.WithType(segments.SegmentTypeGrowing))
|
growingSegments = node.manager.Segment.GetBy(segments.WithType(segments.SegmentTypeGrowing), segments.WithoutLevel(datapb.SegmentLevel_L0))
|
||||||
}
|
}
|
||||||
if node.pipelineManager != nil {
|
if node.pipelineManager != nil {
|
||||||
channelNum = node.pipelineManager.Num()
|
channelNum = node.pipelineManager.Num()
|
||||||
}
|
}
|
||||||
|
if len(sealedSegments) == 0 && len(growingSegments) == 0 && channelNum == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-timeoutCh:
|
case <-timeoutCh:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user