in xray/grpc.go [135:151]
func classifyErrorStatus(seg *Segment, err error) {
seg.Lock()
defer seg.Unlock()
grpcStatus, ok := status.FromError(err)
if !ok {
seg.Fault = true
return
}
switch grpcStatus.Code() {
case codes.Canceled, codes.InvalidArgument, codes.NotFound, codes.AlreadyExists, codes.PermissionDenied, codes.Unauthenticated, codes.FailedPrecondition, codes.Aborted, codes.OutOfRange:
seg.Error = true
case codes.Unknown, codes.DeadlineExceeded, codes.Unimplemented, codes.Internal, codes.Unavailable, codes.DataLoss:
seg.Fault = true
case codes.ResourceExhausted:
seg.Throttle = true
}
}