From 252a1a8b478c0ac662f1f41068ebd99eb8106ba6 Mon Sep 17 00:00:00 2001 From: Owen Diehl Date: Fri, 17 Jan 2020 18:48:24 -0500 Subject: [PATCH] defers putting slice back into pool on ingester push to prevent panicking Error() calls which reference underlying labels Signed-off-by: Owen Diehl --- pkg/ingester/ingester.go | 3 ++- pkg/ingester/ingester_v2.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/ingester/ingester.go b/pkg/ingester/ingester.go index 4c2f60d411..6e7a3d83d5 100644 --- a/pkg/ingester/ingester.go +++ b/pkg/ingester/ingester.go @@ -289,6 +289,8 @@ func (i *Ingester) Push(ctx old_ctx.Context, req *client.WriteRequest) (*client. return i.v2Push(ctx, req) } + defer client.ReuseSlice(req.Timeseries) + userID, err := user.ExtractOrgID(ctx) if err != nil { return nil, fmt.Errorf("no user id") @@ -311,7 +313,6 @@ func (i *Ingester) Push(ctx old_ctx.Context, req *client.WriteRequest) (*client. return nil, wrapWithUser(err, userID) } } - client.ReuseSlice(req.Timeseries) if lastPartialErr != nil { return &client.WriteResponse{}, lastPartialErr.WrapWithUser(userID).WrappedError() diff --git a/pkg/ingester/ingester_v2.go b/pkg/ingester/ingester_v2.go index 5c27461ad2..f8e06b8fce 100644 --- a/pkg/ingester/ingester_v2.go +++ b/pkg/ingester/ingester_v2.go @@ -82,6 +82,8 @@ func NewV2(cfg Config, clientConfig client.Config, limits *validation.Overrides, func (i *Ingester) v2Push(ctx old_ctx.Context, req *client.WriteRequest) (*client.WriteResponse, error) { var lastPartialErr error + defer client.ReuseSlice(req.Timeseries) + userID, err := user.ExtractOrgID(ctx) if err != nil { return nil, fmt.Errorf("no user id") @@ -157,8 +159,6 @@ func (i *Ingester) v2Push(ctx old_ctx.Context, req *client.WriteRequest) (*clien i.metrics.ingestedSamples.Add(float64(succeededSamplesCount)) i.metrics.ingestedSamplesFail.Add(float64(failedSamplesCount)) - client.ReuseSlice(req.Timeseries) - if lastPartialErr != nil { return &client.WriteResponse{}, httpgrpc.Errorf(http.StatusBadRequest, wrapWithUser(lastPartialErr, userID).Error()) }