From b01f7622aa688eb1ebb4176a4f1d301ed7c466ba Mon Sep 17 00:00:00 2001 From: Dilan Bellinghoven Date: Thu, 25 Oct 2018 13:18:46 -0400 Subject: [PATCH] command/agent/sink/sink.go: This fix solves the problem where when multiple file sinks are specified in the agent HCL file, there is unexpected behavior --- command/agent/sink/sink.go | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/command/agent/sink/sink.go b/command/agent/sink/sink.go index 9fe99ec4bae8..25d1977dd136 100644 --- a/command/agent/sink/sink.go +++ b/command/agent/sink/sink.go @@ -100,29 +100,30 @@ func (ss *SinkServer) Run(ctx context.Context, incoming chan string, sinks []*Si *latestToken = token - for _, s := range sinks { - sinkFunc := func(currSink *SinkConfig, currToken string) func() error { - return func() error { - if currToken != *latestToken { - return nil - } - var err error + sinkFunc := func(currSink *SinkConfig, currToken string) func() error { + return func() error { + if currToken != *latestToken { + return nil + } + var err error - if currSink.WrapTTL != 0 { - if currToken, err = s.wrapToken(ss.client, currSink.WrapTTL, currToken); err != nil { - return err - } + if currSink.WrapTTL != 0 { + if currToken, err = currSink.wrapToken(ss.client, currSink.WrapTTL, currToken); err != nil { + return err } + } - if s.DHType != "" { - if currToken, err = s.encryptToken(currToken); err != nil { - return err - } + if currSink.DHType != "" { + if currToken, err = currSink.encryptToken(currToken); err != nil { + return err } - - return currSink.WriteToken(currToken) } + + return currSink.WriteToken(currToken) } + } + + for _, s := range sinks { atomic.AddInt32(ss.remaining, 1) sinkCh <- sinkFunc(s, token) }