diff --git a/internal/indexnode/task.go b/internal/indexnode/task.go index 3486ccfc98..8686036791 100644 --- a/internal/indexnode/task.go +++ b/internal/indexnode/task.go @@ -399,7 +399,7 @@ func (it *indexBuildTask) BuildDiskAnnIndex(ctx context.Context) error { it.tr.Record("build index done") - indexBlobs, err := it.index.SerializeDiskIndex() + fileInfos, err := it.index.GetIndexFileInfo() if err != nil { log.Ctx(ctx).Error("IndexNode index Serialize failed", zap.Error(err)) return err @@ -408,8 +408,12 @@ func (it *indexBuildTask) BuildDiskAnnIndex(ctx context.Context) error { // use serialized size before encoding it.serializedSize = 0 - for _, blob := range indexBlobs { - it.serializedSize += uint64(blob.Size) + for _, info := range fileInfos { + it.serializedSize += uint64(info.FileSize) + it.indexBlobs = append(it.indexBlobs, &storage.Blob{ + Key: info.FileName, + Size: info.FileSize, + }) } // early release index for gc, and we can ensure that Delete is idempotent. @@ -419,7 +423,6 @@ func (it *indexBuildTask) BuildDiskAnnIndex(ctx context.Context) error { encodeIndexFileDur := it.tr.Record("index codec serialize done") metrics.IndexNodeEncodeIndexFileLatency.WithLabelValues(strconv.FormatInt(Params.IndexNodeCfg.GetNodeID(), 10)).Observe(float64(encodeIndexFileDur.Milliseconds())) - it.indexBlobs = indexBlobs return nil } diff --git a/internal/util/indexcgowrapper/index.go b/internal/util/indexcgowrapper/index.go index 1a1b693401..dd8bada457 100644 --- a/internal/util/indexcgowrapper/index.go +++ b/internal/util/indexcgowrapper/index.go @@ -25,10 +25,15 @@ import ( type Blob = storage.Blob +type IndexFileInfo struct { + FileName string + FileSize int64 +} + type CodecIndex interface { Build(*Dataset) error Serialize() ([]*Blob, error) - SerializeDiskIndex() ([]*Blob, error) + GetIndexFileInfo() ([]*IndexFileInfo, error) Load([]*Blob) error Delete() error CleanLocalData() error @@ -233,7 +238,7 @@ func (index *CgoIndex) Serialize() ([]*Blob, error) { return ret, nil } -func (index *CgoIndex) SerializeDiskIndex() ([]*Blob, error) { +func (index *CgoIndex) GetIndexFileInfo() ([]*IndexFileInfo, error) { var cBinarySet C.CBinarySet status := C.SerializeIndexToBinarySet(index.indexPtr, &cBinarySet) @@ -250,17 +255,17 @@ func (index *CgoIndex) SerializeDiskIndex() ([]*Blob, error) { if err != nil { return nil, err } - ret := make([]*Blob, 0) + ret := make([]*IndexFileInfo, 0) for _, key := range keys { size, err := GetBinarySetSize(cBinarySet, key) if err != nil { return nil, err } - blob := &Blob{ - Key: key, - Size: size, + info := &IndexFileInfo{ + FileName: key, + FileSize: size, } - ret = append(ret, blob) + ret = append(ret, info) } return ret, nil