From 835c03fb471dc2c2043e5a72e4dc3beb518fa43a Mon Sep 17 00:00:00 2001 From: Abirdcfly <fp544037857@gmail.com> Date: Thu, 10 Aug 2023 10:51:44 +0800 Subject: [PATCH] vmalert: fix `vmalert_remotewrite_send_duration_seconds_total` metric value (#4801) The deferred call's arguments are evaluated immediately, but the function call is not executed until the surrounding function returns. Signed-off-by: Abirdcfly <fp544037857@gmail.com> --- app/vmalert/remotewrite/remotewrite.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/vmalert/remotewrite/remotewrite.go b/app/vmalert/remotewrite/remotewrite.go index 8d4f935c10..f217bd78b6 100644 --- a/app/vmalert/remotewrite/remotewrite.go +++ b/app/vmalert/remotewrite/remotewrite.go @@ -216,7 +216,9 @@ func (c *Client) flush(ctx context.Context, wr *prompbmarshal.WriteRequest) { retryInterval = maxRetryInterval } timeStart := time.Now() - defer sendDuration.Add(time.Since(timeStart).Seconds()) + defer func() { + sendDuration.Add(time.Since(timeStart).Seconds()) + }() L: for attempts := 0; ; attempts++ { err := c.send(ctx, b)