From c8ba682aafde6424b468cb857176d031a4d00a4e Mon Sep 17 00:00:00 2001 From: congqixia Date: Thu, 7 Nov 2024 12:38:26 +0800 Subject: [PATCH] enhance: [2.4] Use cancel label for ctx canceled storage op (#37468) (#37491) Cherry-pick from master pr: #37468 Previously failed label is used for canceled storage op, which may cause wrong alarm when user cancel load operation or etc. This PR utilizes cancel label when such case happens. --------- Signed-off-by: Congqi Xia --- internal/storage/remote_chunk_manager.go | 24 ++++++++++++++++++++---- pkg/metrics/metrics.go | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/internal/storage/remote_chunk_manager.go b/internal/storage/remote_chunk_manager.go index b3a34d5117..9c36a23c62 100644 --- a/internal/storage/remote_chunk_manager.go +++ b/internal/storage/remote_chunk_manager.go @@ -333,7 +333,11 @@ func (mcm *RemoteChunkManager) getObject(ctx context.Context, bucketName, object if err == nil && reader != nil { metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataGetLabel, metrics.SuccessLabel).Inc() } else { - metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataGetLabel, metrics.FailLabel).Inc() + if errors.Is(err, context.Canceled) { + metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataGetLabel, metrics.CancelLabel).Inc() + } else { + metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataGetLabel, metrics.FailLabel).Inc() + } } return reader, err @@ -349,7 +353,11 @@ func (mcm *RemoteChunkManager) putObject(ctx context.Context, bucketName, object Observe(float64(start.ElapseSpan().Milliseconds())) metrics.PersistentDataOpCounter.WithLabelValues(metrics.MetaPutLabel, metrics.SuccessLabel).Inc() } else { - metrics.PersistentDataOpCounter.WithLabelValues(metrics.MetaPutLabel, metrics.FailLabel).Inc() + if errors.Is(err, context.Canceled) { + metrics.PersistentDataOpCounter.WithLabelValues(metrics.MetaPutLabel, metrics.CancelLabel).Inc() + } else { + metrics.PersistentDataOpCounter.WithLabelValues(metrics.MetaPutLabel, metrics.FailLabel).Inc() + } } return err @@ -365,7 +373,11 @@ func (mcm *RemoteChunkManager) getObjectSize(ctx context.Context, bucketName, ob Observe(float64(start.ElapseSpan().Milliseconds())) metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataStatLabel, metrics.SuccessLabel).Inc() } else { - metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataStatLabel, metrics.FailLabel).Inc() + if errors.Is(err, context.Canceled) { + metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataStatLabel, metrics.CancelLabel).Inc() + } else { + metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataStatLabel, metrics.FailLabel).Inc() + } } return info, err @@ -381,7 +393,11 @@ func (mcm *RemoteChunkManager) removeObject(ctx context.Context, bucketName, obj Observe(float64(start.ElapseSpan().Milliseconds())) metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataRemoveLabel, metrics.SuccessLabel).Inc() } else { - metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataRemoveLabel, metrics.FailLabel).Inc() + if errors.Is(err, context.Canceled) { + metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataRemoveLabel, metrics.CancelLabel).Inc() + } else { + metrics.PersistentDataOpCounter.WithLabelValues(metrics.DataRemoveLabel, metrics.FailLabel).Inc() + } } return err diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go index 3e85cbdc2c..8856fa8215 100644 --- a/pkg/metrics/metrics.go +++ b/pkg/metrics/metrics.go @@ -29,6 +29,7 @@ const ( AbandonLabel = "abandon" SuccessLabel = "success" FailLabel = "fail" + CancelLabel = "cancel" TotalLabel = "total" HybridSearchLabel = "hybrid_search"