stream: call stats handler if the attempt failed to get transport (#2962)

This commit is contained in:
Menghan Li
2019-08-07 13:22:33 -07:00
committed by GitHub
parent cd5357d62e
commit fde0cae1c4

View File

@ -329,13 +329,21 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
// newAttemptLocked creates a new attempt with a transport.
// If it succeeds, then it replaces clientStream's attempt with this new attempt.
func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) error {
func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (retErr error) {
newAttempt := &csAttempt{
cs: cs,
dc: cs.cc.dopts.dc,
statsHandler: sh,
trInfo: trInfo,
}
defer func() {
if retErr != nil {
// This attempt is not set in the clientStream, so it's finish won't
// be called. Call it here for stats and trace in case they are not
// nil.
newAttempt.finish(retErr)
}
}()
if err := cs.ctx.Err(); err != nil {
return toRPCErr(err)