未验证 提交 3759f23f 编写于 作者: C congqixia 提交者: GitHub

Add error log for load segment file failure (#19227)

Signed-off-by: NCongqi Xia <congqi.xia@zilliz.com>
Signed-off-by: NCongqi Xia <congqi.xia@zilliz.com>
上级 a466b949
此差异已折叠。
......@@ -425,6 +425,7 @@ func (loader *segmentLoader) loadFieldBinlogsAsync(field *datapb.FieldBinlog) []
future := loader.ioPool.Submit(func() (interface{}, error) {
binLog, err := loader.cm.Read(path)
if err != nil {
log.Warn("failed to load binlog", zap.String("filePath", path), zap.Error(err))
return nil, err
}
blob := &storage.Blob{
......@@ -471,7 +472,12 @@ func (loader *segmentLoader) loadFieldIndexData(segment *Segment, indexInfo *que
indexFuture := loader.cpuPool.Submit(func() (interface{}, error) {
indexBlobFuture := loader.ioPool.Submit(func() (interface{}, error) {
log.Debug("load index file", zap.String("path", indexPath))
return loader.cm.Read(indexPath)
data, err := loader.cm.Read(indexPath)
if err != nil {
log.Warn("failed to load index file", zap.String("path", indexPath), zap.Error(err))
return nil, err
}
return data, nil
})
indexBlob, err := indexBlobFuture.Await()
......
......@@ -32,6 +32,7 @@ import (
"github.com/milvus-io/milvus/api/schemapb"
"github.com/milvus-io/milvus/internal/common"
"github.com/milvus-io/milvus/internal/log"
"github.com/milvus-io/milvus/internal/mocks"
"github.com/milvus-io/milvus/internal/mq/msgstream"
"github.com/milvus-io/milvus/internal/proto/internalpb"
"github.com/milvus-io/milvus/internal/proto/querypb"
......@@ -310,6 +311,94 @@ func TestSegmentLoader_invalid(t *testing.T) {
err = loader.LoadSegment(req, commonpb.SegmentState_Dropped)
assert.Error(t, err)
})
t.Run("Test load file failed", func(t *testing.T) {
node, err := genSimpleQueryNode(ctx)
assert.NoError(t, err)
loader := node.loader
assert.NotNil(t, loader)
pool, err := concurrency.NewPool(runtime.GOMAXPROCS(0))
require.NoError(t, err)
cm := &mocks.ChunkManager{}
cm.EXPECT().Read(mock.AnythingOfType("string")).Return(nil, errors.New("mocked"))
loader.cm = cm
fieldPk := genPKFieldSchema(simpleInt64Field)
fieldVector := genVectorFieldSchema(simpleFloatVecField)
schema := &schemapb.CollectionSchema{
Name: defaultCollectionName,
AutoID: true,
Fields: []*schemapb.FieldSchema{fieldPk, fieldVector},
}
loader.metaReplica.removeSegment(defaultSegmentID, segmentTypeSealed)
col := newCollection(defaultCollectionID, schema)
assert.NotNil(t, col)
segment, err := newSegment(col,
defaultSegmentID,
defaultPartitionID,
defaultCollectionID,
defaultDMLChannel,
segmentTypeSealed,
defaultSegmentVersion,
pool)
assert.Nil(t, err)
binlog, _, err := saveBinLog(ctx, defaultCollectionID, defaultPartitionID, defaultSegmentID, defaultMsgLength, schema)
assert.NoError(t, err)
err = loader.loadSealedSegmentFields(segment, binlog, &querypb.SegmentLoadInfo{})
assert.Error(t, err)
})
t.Run("Test load index failed", func(t *testing.T) {
node, err := genSimpleQueryNode(ctx)
assert.NoError(t, err)
loader := node.loader
assert.NotNil(t, loader)
pool, err := concurrency.NewPool(runtime.GOMAXPROCS(0))
require.NoError(t, err)
cm := &mocks.ChunkManager{}
cm.EXPECT().Read(mock.AnythingOfType("string")).Return(nil, errors.New("mocked"))
loader.cm = cm
fieldPk := genPKFieldSchema(simpleInt64Field)
fieldVector := genVectorFieldSchema(simpleFloatVecField)
schema := &schemapb.CollectionSchema{
Name: defaultCollectionName,
AutoID: true,
Fields: []*schemapb.FieldSchema{fieldPk, fieldVector},
}
loader.metaReplica.removeSegment(defaultSegmentID, segmentTypeSealed)
col := newCollection(defaultCollectionID, schema)
assert.NotNil(t, col)
segment, err := newSegment(col,
defaultSegmentID,
defaultPartitionID,
defaultCollectionID,
defaultDMLChannel,
segmentTypeSealed,
defaultSegmentVersion,
pool)
assert.Nil(t, err)
err = loader.loadFieldIndexData(segment, &querypb.FieldIndexInfo{
FieldID: fieldVector.FieldID,
EnableIndex: true,
IndexFilePaths: []string{"simpleindex"},
})
assert.Error(t, err)
})
}
func TestSegmentLoader_checkSegmentSize(t *testing.T) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册