mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
fix: Check child fields len instead of nil (#44405)
Related to #44398 --------- Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
This commit is contained in:
parent
41dc494d5b
commit
1e3ec42e54
@ -17,11 +17,14 @@
|
||||
package metacache
|
||||
|
||||
import (
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
|
||||
"github.com/milvus-io/milvus-proto/go-api/v2/msgpb"
|
||||
"github.com/milvus-io/milvus/internal/flushcommon/metacache/pkoracle"
|
||||
"github.com/milvus-io/milvus/internal/storage"
|
||||
"github.com/milvus-io/milvus/internal/storagecommon"
|
||||
"github.com/milvus-io/milvus/pkg/v2/log"
|
||||
"github.com/milvus-io/milvus/pkg/v2/proto/datapb"
|
||||
)
|
||||
|
||||
@ -146,6 +149,7 @@ func (s *SegmentInfo) Clone() *SegmentInfo {
|
||||
statslogs: s.statslogs,
|
||||
deltalogs: s.deltalogs,
|
||||
bm25logs: s.bm25logs,
|
||||
currentSplit: s.currentSplit,
|
||||
}
|
||||
}
|
||||
|
||||
@ -165,6 +169,7 @@ func NewSegmentInfo(info *datapb.SegmentInfo, bfs pkoracle.PkStat, bm25Stats *Se
|
||||
Fields: group.GetChildFields(),
|
||||
})
|
||||
}
|
||||
log.Info("recover split info", zap.Int64("segmentID", info.GetID()), zap.Stringers("columnGroup", currentSplit))
|
||||
}
|
||||
return &SegmentInfo{
|
||||
segmentID: info.GetID(),
|
||||
|
||||
@ -220,8 +220,10 @@ func (t *SyncTask) getColumnGroups(segmentInfo *metacache.SegmentInfo) []storage
|
||||
if currentSplit := segmentInfo.GetCurrentSplit(); currentSplit != nil {
|
||||
for _, cg := range currentSplit {
|
||||
// legacy split found, use legacy policy
|
||||
if cg.Fields == nil {
|
||||
return storagecommon.SplitColumns(allFields, map[int64]storagecommon.ColumnStats{}, storagecommon.NewSelectedDataTypePolicy(), storagecommon.NewRemanentShortPolicy(-1))
|
||||
if len(cg.Fields) == 0 {
|
||||
result := storagecommon.SplitColumns(allFields, map[int64]storagecommon.ColumnStats{}, storagecommon.NewSelectedDataTypePolicy(), storagecommon.NewRemanentShortPolicy(-1))
|
||||
log.Info("use legacy split policy", zap.Int64("segmentID", t.segmentID), zap.Stringers("columnGroups", result))
|
||||
return result
|
||||
}
|
||||
}
|
||||
field2idx := make(map[int64]int)
|
||||
@ -237,9 +239,10 @@ func (t *SyncTask) getColumnGroups(segmentInfo *metacache.SegmentInfo) []storage
|
||||
return currentSplit
|
||||
}
|
||||
|
||||
// TODO calculate field stats
|
||||
policies := storagecommon.DefaultPolicies()
|
||||
return storagecommon.SplitColumns(allFields, t.calcColumnStats(), policies...)
|
||||
result := storagecommon.SplitColumns(allFields, t.calcColumnStats(), policies...)
|
||||
log.Info("sync new split columns", zap.Int64("segmentID", t.segmentID), zap.Stringers("columnGroups", result))
|
||||
return result
|
||||
}
|
||||
|
||||
func (t *SyncTask) calcColumnStats() map[int64]storagecommon.ColumnStats {
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
package storagecommon
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
|
||||
"github.com/milvus-io/milvus-proto/go-api/v2/schemapb"
|
||||
@ -35,6 +36,10 @@ type ColumnGroup struct {
|
||||
Fields []int64
|
||||
}
|
||||
|
||||
func (cg ColumnGroup) String() string {
|
||||
return fmt.Sprintf("[GroupID: %d, ColumnIndices: %v, Fields: %v]", cg.GroupID, cg.Columns, cg.Fields)
|
||||
}
|
||||
|
||||
func SplitColumns(fields []*schemapb.FieldSchema, stats map[int64]ColumnStats, policies ...ColumnGroupSplitPolicy) []ColumnGroup {
|
||||
split := newCurrentSplit(fields, stats)
|
||||
for _, policy := range policies {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user