From 0645d46ec6b5154e2ae1921a5ffd900bba436620 Mon Sep 17 00:00:00 2001 From: congqixia Date: Tue, 5 Nov 2024 19:26:24 +0800 Subject: [PATCH] fix: Skip EOF error when default empty yaml file (#37445) Related to #37404 --------- Signed-off-by: Congqi Xia --- pkg/config/file_source.go | 3 ++- pkg/config/file_source_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 pkg/config/file_source_test.go diff --git a/pkg/config/file_source.go b/pkg/config/file_source.go index 4eace878d8..535e87d5c2 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 0000000000..60abdb110e --- /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() +}