diff --git a/lib/fluent/plugin/parser_csv.rb b/lib/fluent/plugin/parser_csv.rb index 21d89df874..9fb6c9b1f8 100644 --- a/lib/fluent/plugin/parser_csv.rb +++ b/lib/fluent/plugin/parser_csv.rb @@ -47,6 +47,11 @@ def configure(conf) def parse(text, &block) values = CSV.parse_line(text, col_sep: @delimiter) + unless values + yield nil, nil + return + end + r = Hash[@keys.zip(values)] time, record = convert_values(parse_time(r), r) yield time, record diff --git a/test/plugin/test_parser_csv.rb b/test/plugin/test_parser_csv.rb index 846fa2e119..04eee674a9 100644 --- a/test/plugin/test_parser_csv.rb +++ b/test/plugin/test_parser_csv.rb @@ -101,6 +101,14 @@ def test_parse_with_option_delimiter(param) end end + def test_parse_empty_line + d = create_driver('keys' => '["k1","k2","k3"]') + d.instance.parse("") do |time, record| + assert_nil time + assert_nil record + end + end + sub_test_case 'parser' do data('normal' => 'normal', 'fast' => 'fast')