From 91cf764eff097ff7dc6b1b1e268f1712ed2af623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Przybysz?= Date: Tue, 14 Dec 2021 23:07:10 +0100 Subject: [PATCH] fix: flush wavefront output sender on error to clean up broken connections (#10225) --- go.mod | 2 +- go.sum | 2 ++ plugins/outputs/wavefront/wavefront.go | 5 ++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 0527f7985..885e08d86 100644 --- a/go.mod +++ b/go.mod @@ -260,7 +260,7 @@ require ( github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae // indirect github.com/vjeantet/grok v1.0.1 github.com/vmware/govmomi v0.26.0 - github.com/wavefronthq/wavefront-sdk-go v0.9.7 + github.com/wavefronthq/wavefront-sdk-go v0.9.9 github.com/wvanbergen/kafka v0.0.0-20171203153745-e2edea948ddf github.com/wvanbergen/kazoo-go v0.0.0-20180202103751-f72d8611297a // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect diff --git a/go.sum b/go.sum index a434a2df0..4c5a77e75 100644 --- a/go.sum +++ b/go.sum @@ -2079,6 +2079,8 @@ github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9o github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad/go.mod h1:Hy8o65+MXnS6EwGElrSRjUzQDLXreJlzYLlWiHtt8hM= github.com/wavefronthq/wavefront-sdk-go v0.9.7 h1:SrtABcXXeKCW5SerQYsnCzHo15GeggjZmL+DjtTy6CI= github.com/wavefronthq/wavefront-sdk-go v0.9.7/go.mod h1:JTGsu+KKgxx+GitC65VVdftN2iep1nVpQi/8EGR6v4Y= +github.com/wavefronthq/wavefront-sdk-go v0.9.9 h1:ufOksviv+Cg6X2BIqha//onx8kJkQWZTYWjXcsLYDN0= +github.com/wavefronthq/wavefront-sdk-go v0.9.9/go.mod h1:JTGsu+KKgxx+GitC65VVdftN2iep1nVpQi/8EGR6v4Y= github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= diff --git a/plugins/outputs/wavefront/wavefront.go b/plugins/outputs/wavefront/wavefront.go index 7049ded52..710d4106f 100644 --- a/plugins/outputs/wavefront/wavefront.go +++ b/plugins/outputs/wavefront/wavefront.go @@ -173,7 +173,10 @@ func (w *Wavefront) Write(metrics []telegraf.Metric) error { err := w.sender.SendMetric(point.Metric, point.Value, point.Timestamp, point.Source, point.Tags) if err != nil { if isRetryable(err) { - return fmt.Errorf("wavefront sending error: %v", err) + if flushErr := w.sender.Flush(); flushErr != nil { + w.Log.Errorf("wavefront flushing error: %v", flushErr) + } + return fmt.Errorf("wavefront sending error: %v", err) } w.Log.Errorf("non-retryable error during Wavefront.Write: %v", err) w.Log.Debugf("Non-retryable metric data: Name: %v, Value: %v, Timestamp: %v, Source: %v, PointTags: %v ", point.Metric, point.Value, point.Timestamp, point.Source, point.Tags)