when -format-error option is used, format service reflection errors, too (#188)
This commit is contained in:
parent
9846afccbc
commit
9da71fbe53
|
|
@ -695,8 +695,12 @@ func main() {
|
||||||
|
|
||||||
err = grpcurl.InvokeRPC(ctx, descSource, cc, symbol, append(addlHeaders, rpcHeaders...), h, rf.Next)
|
err = grpcurl.InvokeRPC(ctx, descSource, cc, symbol, append(addlHeaders, rpcHeaders...), h, rf.Next)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errStatus, ok := status.FromError(err); ok && *formatError {
|
||||||
|
h.Status = errStatus
|
||||||
|
} else {
|
||||||
fail(err, "Error invoking method %q", symbol)
|
fail(err, "Error invoking method %q", symbol)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
reqSuffix := ""
|
reqSuffix := ""
|
||||||
respSuffix := ""
|
respSuffix := ""
|
||||||
reqCount := rf.NumRequests()
|
reqCount := rf.NumRequests()
|
||||||
|
|
|
||||||
10
invoke.go
10
invoke.go
|
|
@ -93,9 +93,17 @@ func InvokeRPC(ctx context.Context, source DescriptorSource, ch grpcdynamic.Chan
|
||||||
if svc == "" || mth == "" {
|
if svc == "" || mth == "" {
|
||||||
return fmt.Errorf("given method name %q is not in expected format: 'service/method' or 'service.method'", methodName)
|
return fmt.Errorf("given method name %q is not in expected format: 'service/method' or 'service.method'", methodName)
|
||||||
}
|
}
|
||||||
|
|
||||||
dsc, err := source.FindSymbol(svc)
|
dsc, err := source.FindSymbol(svc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if isNotFoundError(err) {
|
// 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("target server does not expose service %q", svc)
|
||||||
}
|
}
|
||||||
return fmt.Errorf("failed to query for service descriptor %q: %v", svc, err)
|
return fmt.Errorf("failed to query for service descriptor %q: %v", svc, err)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue