in plugins/grpc/client_recvmsg_interceptor.go [55:76]
func (h *ClientRecvMsgInterceptor) AfterInvoke(invocation operator.Invocation, result ...interface{}) error {
if invocation.GetContext() == nil {
return nil
}
span := invocation.GetContext().(tracing.Span)
err, ok := result[0].(error)
if ok && err != nil && err != io.EOF {
span.Error(err.Error())
}
if err == io.EOF {
cs := invocation.CallerInstance().(*nativeclientStream)
method := cs.callHdr.Method
span.SetOperationName(formatOperationName(method, "/Client/Response/CloseRecv"))
}
span.End()
csEnhanced, ok := invocation.CallerInstance().(operator.EnhancedInstance)
if ok && csEnhanced.GetSkyWalkingDynamicField() != nil {
contextdata := csEnhanced.GetSkyWalkingDynamicField().(*contextData)
tracing.ContinueContext(contextdata.endSnapShot)
}
return nil
}