From 6cfed59b7dcc5ac3c14b25e6f96913f942728fa9 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Wed, 30 Sep 2020 11:06:58 -0500 Subject: [PATCH] notFound error formatting --- invoke.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/invoke.go b/invoke.go index f2e1c5e..39a0eb9 100644 --- a/invoke.go +++ b/invoke.go @@ -96,12 +96,15 @@ func InvokeRPC(ctx context.Context, source DescriptorSource, ch grpcdynamic.Chan dsc, err := source.FindSymbol(svc) if err != nil { - if isNotFoundError(err) { - return fmt.Errorf("target server does not expose service %q", svc) - } - // return the error unstringified if it is a gRPC status error - if errStatus, ok := status.FromError(err); ok { + // return a gRPC status error if hasStatus is true + errStatus, hasStatus := status.FromError(err) + switch { + case hasStatus && isNotFoundError(err): + return status.Errorf(errStatus.Code(), "target server does not expose service %q: %s", svc, errStatus.Message()) + case hasStatus: return status.Errorf(errStatus.Code(), "failed to query for service descriptor %q: %s", svc, errStatus.Message()) + case isNotFoundError(err): + return fmt.Errorf("target server does not expose service %q", svc) } return fmt.Errorf("failed to query for service descriptor %q: %v", svc, err) }