From 33c3614273a8803a617b4b729bfe6a5246ef6848 Mon Sep 17 00:00:00 2001 From: Evan Zhou Date: Tue, 31 Mar 2020 14:23:36 +0800 Subject: [PATCH 1/2] do not slow log for pessimistic write conflict retry --- executor/adapter.go | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/executor/adapter.go b/executor/adapter.go index fa1af494f2873..988a33b880dc3 100644 --- a/executor/adapter.go +++ b/executor/adapter.go @@ -455,25 +455,17 @@ func (a *ExecStmt) handlePessimisticSelectForUpdate(ctx context.Context, e Execu } func (a *ExecStmt) runPessimisticSelectForUpdate(ctx context.Context, e Executor) (sqlexec.RecordSet, error) { - rs := &recordSet{ - executor: e, - stmt: a, - } - defer func() { - terror.Log(rs.Close()) - }() - var rows []chunk.Row var err error - fields := rs.Fields() - req := rs.NewChunk() + req := newFirstChunk(e) for { - err = rs.Next(ctx, req) + err = Next(ctx, e, req) if err != nil { // Handle 'write conflict' error. break } if req.NumRows() == 0 { + fields := colNames2ResultFields(e.Schema(), a.OutputNames, a.Ctx.GetSessionVars().CurrentDB) return &chunkRowRecordSet{rows: rows, fields: fields, e: e}, nil } iter := chunk.NewIterator4Chunk(req) From 70bb426633f2146e961c391a4ef557683dfae1c6 Mon Sep 17 00:00:00 2001 From: Evan Zhou Date: Tue, 31 Mar 2020 14:45:28 +0800 Subject: [PATCH 2/2] fix leak --- executor/adapter.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/executor/adapter.go b/executor/adapter.go index 988a33b880dc3..f8746e114b297 100644 --- a/executor/adapter.go +++ b/executor/adapter.go @@ -455,6 +455,9 @@ func (a *ExecStmt) handlePessimisticSelectForUpdate(ctx context.Context, e Execu } func (a *ExecStmt) runPessimisticSelectForUpdate(ctx context.Context, e Executor) (sqlexec.RecordSet, error) { + defer func() { + terror.Log(e.Close()) + }() var rows []chunk.Row var err error req := newFirstChunk(e)