Tagpass selector doesn't seem to work with parser processor

Hi,

currently we are using tail input to collect logfiles and parse them with grok input format.
Some lines of these logfiles contain information we’d like to extrakt into special fields.
I thought I could use the parser processor with a different grok pattern to parse the messages of the logfile.

In principally this seems to work - but it looks like the parser is called for every single metric we extract from the logfiles and I can’t select only those we like to be parsed.

Let’s take this example:

I’d like to parse this logfile (I reference as test-parse.log to it in my config):

[2019-05-20 13:15:00,011] [INFO] [special]  special message with 7 as value. 
[2019-05-20 13:15:00,302] [INFO] [other]   other message

And I use this telegraf.config

    [agent]
      debug = true
      quiet = false
    [[outputs.file]]
      files = ["stdout"]
    [[inputs.tail]]
       files = ["test-parse.log"]
       from_beginning = true
       data_format = "grok"
       grok_patterns = ['\[%{TIMESTAMP_ISO8601:timestamp:ts-"2006-01-02 15:04:05"}\] \[%{LOGLEVEL:level:tag}\] \[%{DATA:class:tag}\] %{GREEDYDATA:message}']

    [[processors.parser]]
      parse_fields = ["message"]
      merge = "override"
      drop_original = false
      data_format = "grok"
      grok_patterns = ["special message with %{NUMBER:value} as value."]
    #  namepass = ["tail"]
     [[processors.parser.tagpass]]
       class = ["special"]

Because of the tagpass in the config I expect the second grok pattern only to be executed on the first line in the logfile. But I get the following output:

2019-05-21T11:22:41Z I! Starting Telegraf
2019-05-21T11:22:41Z I! Loaded inputs: tail
2019-05-21T11:22:41Z I! Loaded aggregators:
2019-05-21T11:22:41Z I! Loaded processors: parser
2019-05-21T11:22:41Z I! Loaded outputs: file
2019-05-21T11:22:41Z I! Tags enabled: host=OLDN92506
2019-05-21T11:22:41Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"OLDN92506", Flush Interval:10s
2019-05-21T11:22:41Z D! [agent] Connecting outputs
2019-05-21T11:22:41Z D! [agent] Attempting connection to output: file
2019-05-21T11:22:41Z D! [agent] Successfully connected to output: file
2019-05-21T11:22:41Z D! [agent] Starting service inputs
2019-05-21T11:22:41Z D! [inputs.tail] tail added for file: ./test/test-parse.log
2019-05-21T11:22:41Z D! Grok no match found for: "  other message"
tail,class=other,host=OLDN92506,level=INFO,path=./test/test-parse.log message="  other message" 1558358100302000000
tail,class=special,host=OLDN92506,level=INFO,path=./test/test-parse.log message=" special message with 7 as value. ",value="7" 1558358100011000000
2019-05-21T11:23:00Z D! [outputs.file] wrote batch of 2 metrics in 2ms

The message Grok no match found for: " other message" tells me that the grok is also evaluated against the second line of my logfile, even though the class tag it gets isn’t included in the tagpass section of my config!

In this example the output acually is correct - but of cause my real config is more complex and I don’t want all passing data to be parsed when less that 1% of it actually needs to be parsed.

What am I doing wrong?