From f99afb9575a40d970de84ba6dfe4292b690c9baf Mon Sep 17 00:00:00 2001 From: Dilan Bellinghoven Date: Thu, 1 Nov 2018 17:44:13 -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 (#5610) --- command/agent/sink/sink.go | 43 +++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/command/agent/sink/sink.go b/command/agent/sink/sink.go index 9fe99ec4ba..25d1977dd1 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 - - if currSink.WrapTTL != 0 { - if currToken, err = s.wrapToken(ss.client, currSink.WrapTTL, currToken); err != nil { - return err - } - } - - if s.DHType != "" { - if currToken, err = s.encryptToken(currToken); err != nil { - return err - } - } - - return currSink.WriteToken(currToken) + 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 = currSink.wrapToken(ss.client, currSink.WrapTTL, currToken); err != nil { + return err + } + } + + if currSink.DHType != "" { + if currToken, err = currSink.encryptToken(currToken); err != nil { + return err + } + } + + return currSink.WriteToken(currToken) } + } + + for _, s := range sinks { atomic.AddInt32(ss.remaining, 1) sinkCh <- sinkFunc(s, token) }