From 18fd2d987d72070bc8fa4e67eb08c82fbf680156 Mon Sep 17 00:00:00 2001 From: Daniel Nelson Date: Tue, 2 May 2017 14:54:38 -0700 Subject: [PATCH] Return an error if no valid patterns. (#2753) --- plugins/inputs/logparser/grok/grok.go | 11 +++++++++-- plugins/inputs/logparser/logparser.go | 7 +------ plugins/inputs/logparser/logparser_test.go | 8 ++------ 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/plugins/inputs/logparser/grok/grok.go b/plugins/inputs/logparser/grok/grok.go index f684e9339..ae23e5f51 100644 --- a/plugins/inputs/logparser/grok/grok.go +++ b/plugins/inputs/logparser/grok/grok.go @@ -118,11 +118,18 @@ func (p *Parser) Compile() error { // Give Patterns fake names so that they can be treated as named // "custom patterns" - p.namedPatterns = make([]string, len(p.Patterns)) + p.namedPatterns = make([]string, 0, len(p.Patterns)) for i, pattern := range p.Patterns { + if pattern == "" { + continue + } name := fmt.Sprintf("GROK_INTERNAL_PATTERN_%d", i) p.CustomPatterns += "\n" + name + " " + pattern + "\n" - p.namedPatterns[i] = "%{" + name + "}" + p.namedPatterns = append(p.namedPatterns, "%{"+name+"}") + } + + if len(p.namedPatterns) == 0 { + return fmt.Errorf("pattern required") } // Combine user-supplied CustomPatterns with DEFAULT_PATTERNS and parse diff --git a/plugins/inputs/logparser/logparser.go b/plugins/inputs/logparser/logparser.go index 0b5bcb811..b986aec7d 100644 --- a/plugins/inputs/logparser/logparser.go +++ b/plugins/inputs/logparser/logparser.go @@ -117,16 +117,11 @@ func (l *LogParserPlugin) Start(acc telegraf.Accumulator) error { } // compile log parser patterns: - var haveError bool for _, parser := range l.parsers { if err := parser.Compile(); err != nil { - acc.AddError(err) - haveError = true + return err } } - if haveError { - return nil - } l.wg.Add(1) go l.parser() diff --git a/plugins/inputs/logparser/logparser_test.go b/plugins/inputs/logparser/logparser_test.go index 66802da4f..b706c62d7 100644 --- a/plugins/inputs/logparser/logparser_test.go +++ b/plugins/inputs/logparser/logparser_test.go @@ -38,12 +38,8 @@ func TestGrokParseLogFilesNonExistPattern(t *testing.T) { } acc := testutil.Accumulator{} - logparser.Start(&acc) - if assert.NotEmpty(t, acc.Errors) { - assert.Error(t, acc.Errors[0]) - } - - logparser.Stop() + err := logparser.Start(&acc) + assert.Error(t, err) } func TestGrokParseLogFiles(t *testing.T) {