don't add defer func if stats handler is nil (#1214)

This commit is contained in:
kirk
2017-05-02 12:16:45 -05:00
committed by Menghan Li
parent 0eb507a2ca
commit 0914b46180
3 changed files with 19 additions and 25 deletions

View File

@ -189,17 +189,15 @@ func invoke(ctx context.Context, method string, args, reply interface{}, cc *Cli
FailFast: c.failFast, FailFast: c.failFast,
} }
sh.HandleRPC(ctx, begin) sh.HandleRPC(ctx, begin)
} defer func() {
defer func() {
if sh != nil {
end := &stats.End{ end := &stats.End{
Client: true, Client: true,
EndTime: time.Now(), EndTime: time.Now(),
Error: e, Error: e,
} }
sh.HandleRPC(ctx, end) sh.HandleRPC(ctx, end)
} }()
}() }
topts := &transport.Options{ topts := &transport.Options{
Last: true, Last: true,
Delay: false, Delay: false,

View File

@ -644,9 +644,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport.
BeginTime: time.Now(), BeginTime: time.Now(),
} }
sh.HandleRPC(stream.Context(), begin) sh.HandleRPC(stream.Context(), begin)
} defer func() {
defer func() {
if sh != nil {
end := &stats.End{ end := &stats.End{
EndTime: time.Now(), EndTime: time.Now(),
} }
@ -654,8 +652,8 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport.
end.Error = toRPCErr(err) end.Error = toRPCErr(err)
} }
sh.HandleRPC(stream.Context(), end) sh.HandleRPC(stream.Context(), end)
} }()
}() }
if trInfo != nil { if trInfo != nil {
defer trInfo.tr.Finish() defer trInfo.tr.Finish()
trInfo.firstLine.client = false trInfo.firstLine.client = false
@ -814,9 +812,7 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp
BeginTime: time.Now(), BeginTime: time.Now(),
} }
sh.HandleRPC(stream.Context(), begin) sh.HandleRPC(stream.Context(), begin)
} defer func() {
defer func() {
if sh != nil {
end := &stats.End{ end := &stats.End{
EndTime: time.Now(), EndTime: time.Now(),
} }
@ -824,8 +820,8 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp
end.Error = toRPCErr(err) end.Error = toRPCErr(err)
} }
sh.HandleRPC(stream.Context(), end) sh.HandleRPC(stream.Context(), end)
} }()
}() }
if s.opts.cp != nil { if s.opts.cp != nil {
stream.SetSendCompress(s.opts.cp.Type()) stream.SetSendCompress(s.opts.cp.Type())
} }

View File

@ -161,17 +161,17 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
FailFast: c.failFast, FailFast: c.failFast,
} }
sh.HandleRPC(ctx, begin) sh.HandleRPC(ctx, begin)
} defer func() {
defer func() { if err != nil {
if err != nil && sh != nil { // Only handle end stats if err != nil.
// Only handle end stats if err != nil. end := &stats.End{
end := &stats.End{ Client: true,
Client: true, Error: err,
Error: err, }
sh.HandleRPC(ctx, end)
} }
sh.HandleRPC(ctx, end) }()
} }
}()
gopts := BalancerGetOptions{ gopts := BalancerGetOptions{
BlockingWait: !c.failFast, BlockingWait: !c.failFast,
} }