From d22f5b3a4e014a88c17c84dcba26b1ae03cb3e47 Mon Sep 17 00:00:00 2001 From: Marco Pracucci Date: Fri, 29 Nov 2019 14:45:30 +0100 Subject: [PATCH] Reuse request slice on error in the ingester Signed-off-by: Marco Pracucci --- pkg/ingester/ingester.go | 4 +++- pkg/ingester/ingester_v2.go | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/ingester/ingester.go b/pkg/ingester/ingester.go index 2cbb5899d75..b89995274a9 100644 --- a/pkg/ingester/ingester.go +++ b/pkg/ingester/ingester.go @@ -289,6 +289,9 @@ func (i *Ingester) Push(ctx old_ctx.Context, req *client.WriteRequest) (*client. return i.v2Push(ctx, req) } + // Reuse the slice once done (whether the function completes successfully or errors out) + defer client.ReuseSlice(req.Timeseries) + userID, err := user.ExtractOrgID(ctx) if err != nil { return nil, fmt.Errorf("no user id") @@ -314,7 +317,6 @@ func (i *Ingester) Push(ctx old_ctx.Context, req *client.WriteRequest) (*client. return nil, err } } - client.ReuseSlice(req.Timeseries) return &client.WriteResponse{}, lastPartialErr } diff --git a/pkg/ingester/ingester_v2.go b/pkg/ingester/ingester_v2.go index 208f4db127b..e8fb2e07ed3 100644 --- a/pkg/ingester/ingester_v2.go +++ b/pkg/ingester/ingester_v2.go @@ -68,6 +68,9 @@ func NewV2(cfg Config, clientConfig client.Config, limits *validation.Overrides, // v2Push adds metrics to a block func (i *Ingester) v2Push(ctx old_ctx.Context, req *client.WriteRequest) (*client.WriteResponse, error) { + // Reuse the slice once done (whether the function completes successfully or errors out) + defer client.ReuseSlice(req.Timeseries) + userID, err := user.ExtractOrgID(ctx) if err != nil { return nil, fmt.Errorf("no user id") @@ -101,8 +104,6 @@ func (i *Ingester) v2Push(ctx old_ctx.Context, req *client.WriteRequest) (*clien return nil, err } - client.ReuseSlice(req.Timeseries) - return &client.WriteResponse{}, nil }