diff --git a/internal/querynodev2/segments/segment.go b/internal/querynodev2/segments/segment.go index 9a55a9e726..b0edad636f 100644 --- a/internal/querynodev2/segments/segment.go +++ b/internal/querynodev2/segments/segment.go @@ -1091,6 +1091,11 @@ func (s *LocalSegment) innerLoadIndex(ctx context.Context, func (s *LocalSegment) LoadTextIndex(ctx context.Context, textLogs *datapb.TextIndexStats, schemaHelper *typeutil.SchemaHelper) error { log.Ctx(ctx).Info("load text index", zap.Int64("field id", textLogs.GetFieldID()), zap.Any("text logs", textLogs)) + if !s.ptrLock.PinIf(state.IsNotReleased) { + return merr.WrapErrSegmentNotLoaded(s.ID(), "segment released") + } + defer s.ptrLock.Unpin() + f, err := schemaHelper.GetFieldFromID(textLogs.GetFieldID()) if err != nil { return err @@ -1125,6 +1130,11 @@ func (s *LocalSegment) LoadTextIndex(ctx context.Context, textLogs *datapb.TextI } func (s *LocalSegment) LoadJSONKeyIndex(ctx context.Context, jsonKeyStats *datapb.JsonKeyStats, schemaHelper *typeutil.SchemaHelper) error { + if !s.ptrLock.PinIf(state.IsNotReleased) { + return merr.WrapErrSegmentNotLoaded(s.ID(), "segment released") + } + defer s.ptrLock.Unpin() + if jsonKeyStats.GetJsonKeyStatsDataFormat() == 0 { log.Ctx(ctx).Info("load json key index failed dataformat invalid", zap.Int64("dataformat", jsonKeyStats.GetJsonKeyStatsDataFormat()), zap.Int64("field id", jsonKeyStats.GetFieldID()), zap.Any("json key logs", jsonKeyStats)) return nil