fluent / fluent/fluentd

Loading same plugin from multiple directories cause unfriendly error

Open
#3,310 6 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Ruby
Stars
13.6k
Forks
1.4k
Avg merge
1d 3h
Merged PRs (30d)
20

Description

**Describe the bug**
Fluentd raises `Fluent::Plugin::RegexpParser: description specified twice for expression (ArgumentError)` when using a "parser" filter. Tested on 1.12.2 and 1.7.0

**To Reproduce**

I used the same configuration as given in the example: https://docs.fluentd.org/filter/parser

```

@type tail
path /any/file.log
tag foo.bar

@type parser
key_name log

@type regexp
expression /^(?[^ ]*) [^ ]* (?[^ ]*) \[(?

```

**Expected behavior**
It should run, or at least give an understandable error if I made a mistake

**Your Environment**

- Fluentd or td-agent version: `fluentd 1.12.2` and `fluentd 1.7.0`
- Operating system: `NixOS`
- Kernel version: `5.7.11`

If you hit the problem with older fluentd version, try latest version first.

**Your Error Log**
```
`2021-03-31 12:53:08 +0200 [info]: parsing config file is succeeded path="fluentd2.conf"
Traceback (most recent call last):
30: from /nix/store/na19fwwimzbiybraq8ml51w5da73404y-fluentd-1.7.0/bin/fluentd:20:in `'
29: from /nix/store/na19fwwimzbiybraq8ml51w5da73404y-fluentd-1.7.0/bin/fluentd:20:in `load'
28: from /nix/store/na19fwwimzbiybraq8ml51w5da73404y-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/bin/fluentd:8:in `'
27: from /nix/store/na19fwwimzbiybraq8ml51w5da73404y-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/bin/fluentd:8:in `require'
26: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/command/fluentd.rb:314:in `'
25: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/supervisor.rb:504:in `run_supervisor'
24: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/supervisor.rb:599:in `supervise'
23: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/supervisor.rb:581:in `dry_run'
22: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/supervisor.rb:804:in `run_configure'
21: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/engine.rb:96:in `run_configure'
20: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/engine.rb:131:in `configure'
19: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/root_agent.rb:156:in `configure'
18: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/root_agent.rb:156:in `each'
17: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/root_agent.rb:160:in `block in configure'
16: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/root_agent.rb:315:in `add_source'
15: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin.rb:100:in `new_input'
14: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin.rb:146:in `new_impl'
13: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/registry.rb:44:in `lookup'
12: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/registry.rb:86:in `search'
11: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/registry.rb:86:in `require'
10: from /nix/store/na19fwwimzbiybraq8ml51w5da73404y-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin/in_tail.rb:23:in `'
9: from /nix/store/na19fwwimzbiybraq8ml51w5da73404y-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin/in_tail.rb:23:in `require'
8: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin/parser_multiline.rb:18:in `'
7: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin/parser_multiline.rb:18:in `require'
6: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin/parser_regexp.rb:19:in `'
5: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin/parser_regexp.rb:20:in `'
4: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin/parser_regexp.rb:21:in `'
3: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/plugin/parser_regexp.rb:25:in `'
2: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/configurable.rb:158:in `config_param'
1: from /nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/config/configure_proxy.rb:321:in `config_param'
/nix/store/5xxrb75cby1h2kpb1kbpm7lsps2lazry-ruby2.6.6-fluentd-1.7.0/lib/ruby/gems/2.6.0/gems/fluentd-1.7.0/lib/fluent/config/configure_proxy.rb:345:in `config_set_desc': Fluent::Plugin::RegexpParser: description specified twice for expression (ArgumentError)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.