diff --git a/pkg/config/file_source.go b/pkg/config/file_source.go index 4eace878d890f..535e87d5c2963 100644 --- a/pkg/config/file_source.go +++ b/pkg/config/file_source.go @@ -19,6 +19,7 @@ package config import ( "bytes" "fmt" + "io" "os" "path/filepath" "sync" @@ -146,7 +147,7 @@ func (fs *FileSource) loadFromFile() error { var node yaml.Node decoder := yaml.NewDecoder(bytes.NewReader(data)) - if err := decoder.Decode(&node); err != nil { + if err := decoder.Decode(&node); err != nil && !errors.Is(err, io.EOF) { return errors.Wrap(err, "YAML unmarshal failed: "+configFile) } diff --git a/pkg/config/file_source_test.go b/pkg/config/file_source_test.go new file mode 100644 index 0000000000000..60abdb110ed7d --- /dev/null +++ b/pkg/config/file_source_test.go @@ -0,0 +1,32 @@ +package config + +import ( + "os" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestEmptyYaml(t *testing.T) { + file, err := os.CreateTemp(os.TempDir(), "milvus_ut_config_fs_*.yaml") + require.NoError(t, err) + + filepath := file.Name() + + file.WriteString("#") + file.Close() + + defer os.Remove(filepath) + + fs := NewFileSource(&FileInfo{ + Files: []string{filepath}, + RefreshInterval: time.Hour, + }) + + _, err = fs.GetConfigurations() + assert.NoError(t, err) + + fs.Close() +}