From 24997744341e91d8382cb9eccb15f41f2d6fd6e1 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 c86d6f89b78..6999034a053 100644 --- a/pkg/ingester/ingester.go +++ b/pkg/ingester/ingester.go @@ -226,6 +226,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") @@ -248,7 +250,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 8a703ac6f28..c4129cf3043 100644 --- a/pkg/ingester/ingester_v2.go +++ b/pkg/ingester/ingester_v2.go @@ -105,6 +105,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 firstPartialErr error + defer client.ReuseSlice(req.Timeseries) + userID, err := user.ExtractOrgID(ctx) if err != nil { return nil, fmt.Errorf("no user id") @@ -183,8 +185,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 firstPartialErr != nil { return &client.WriteResponse{}, httpgrpc.Errorf(http.StatusBadRequest, wrapWithUser(firstPartialErr, userID).Error()) }