Skip to content

Commit 2b9bd23

Browse files
authored
Merge pull request #2375 from monkey92t/defer-releaseConn
fix(conn): releaseConn should be executed correctly
2 parents 805bfc2 + 21e1954 commit 2b9bd23

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

cluster.go

+14-6
Original file line numberDiff line numberDiff line change
@@ -1287,9 +1287,13 @@ func (c *ClusterClient) processPipelineNode(
12871287
return err
12881288
}
12891289

1290-
err = c.processPipelineNodeConn(ctx, node, cn, cmds, failedCmds)
1291-
node.Client.releaseConn(ctx, cn, err)
1292-
return err
1290+
var processErr error
1291+
defer func() {
1292+
node.Client.releaseConn(ctx, cn, processErr)
1293+
}()
1294+
processErr = c.processPipelineNodeConn(ctx, node, cn, cmds, failedCmds)
1295+
1296+
return processErr
12931297
})
12941298
}
12951299

@@ -1464,9 +1468,13 @@ func (c *ClusterClient) processTxPipelineNode(
14641468
return err
14651469
}
14661470

1467-
err = c.processTxPipelineNodeConn(ctx, node, cn, cmds, failedCmds)
1468-
node.Client.releaseConn(ctx, cn, err)
1469-
return err
1471+
var processErr error
1472+
defer func() {
1473+
node.Client.releaseConn(ctx, cn, processErr)
1474+
}()
1475+
processErr = c.processTxPipelineNodeConn(ctx, node, cn, cmds, failedCmds)
1476+
1477+
return processErr
14701478
})
14711479
}
14721480

redis.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -342,9 +342,14 @@ func (c *baseClient) withConn(
342342
return err
343343
}
344344

345-
err = fn(ctx, cn)
346-
c.releaseConn(ctx, cn, err)
347-
return err
345+
var fnErr error
346+
defer func() {
347+
c.releaseConn(ctx, cn, fnErr)
348+
}()
349+
350+
fnErr = fn(ctx, cn)
351+
352+
return fnErr
348353
}
349354

350355
func (c *baseClient) dial(ctx context.Context, network, addr string) (net.Conn, error) {

0 commit comments

Comments
 (0)