diff --git a/internal/datacoord/meta.go b/internal/datacoord/meta.go index f2b508cd7f..1bfa421992 100644 --- a/internal/datacoord/meta.go +++ b/internal/datacoord/meta.go @@ -1071,7 +1071,8 @@ func buildSegment(collectionID UniqueID, partitionID UniqueID, segmentID UniqueI } func isSegmentHealthy(segment *SegmentInfo) bool { - return segment.GetState() != commonpb.SegmentState_SegmentStateNone && + return segment != nil && + segment.GetState() != commonpb.SegmentState_SegmentStateNone && segment.GetState() != commonpb.SegmentState_NotExist && segment.GetState() != commonpb.SegmentState_Dropped } diff --git a/internal/datacoord/meta_test.go b/internal/datacoord/meta_test.go index 3944b35ae1..84c7f7e9f6 100644 --- a/internal/datacoord/meta_test.go +++ b/internal/datacoord/meta_test.go @@ -755,3 +755,9 @@ func TestMeta_GetAllSegments(t *testing.T) { assert.Nil(t, seg2) assert.NotNil(t, seg2All) } + +func TestMeta_isSegmentHealthy_issue17823_panic(t *testing.T) { + var seg *SegmentInfo + + assert.False(t, isSegmentHealthy(seg)) +}