fullstorydev / fullstorydev/grpcurl

Include more output while connecting and reflecting with verbose mode

Open
#467 1 comment 11 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
12.8k
Forks
580
Avg merge
1h 8m
Merged PRs (30d)
5

Description

Trying to use `grpcurl` against a proxy server (therefore hitting all sorts of unusual edge cases) has been a bit of a pain for debugging because it doesn't generally provide any diagnostics, even with `-v`/`-vv`. I would have expected one or the other to include details about the connection state and reflection queries, but instead the output is generally minimal / confusing. Some examples:

* Hit an Envoy proxy incorrectly routing `/grpc.reflection.v1alpha.ServerReflection` to an HTTP server

```
$ grpcurl -vv -plaintext -d '{}' my_proxy:8080 my.CoolService.Endpoint
# no output, just hangs, I suspect because the HTTP server doesn't correctly close the streaming reflection request
^C
```

* Passing -max-time helps but you need to look closely to realize it's reporting that reflection is what timed out

```
$ grpcurl -vv -plaintext -max-time 10 -d '{}' my_proxy:8080 my.CoolService.Endpoint
Error invoking method "my_server my.CoolService.Endpoint": rpc error: code = DeadlineExceeded desc = failed to query for service descriptor "my_server my.CoolService": context deadline exceeded
```

* Hit that same HTTP server directly (this is a particularly odd failure as the server is up, and `curl my_server:8080` responds):

```
$ grpcurl -vv -plaintext -d '{}' my_server:8080 my.CoolService.Endpoint
Failed to dial target host "my_server:8080": context deadline exceeded
```

Obviously these are all cases were I would expect `grpcurl` to fail, but the output, especially with `-vv`, is IMO lacking. It would be great if more information could be surfaced in `-v` or `-vv` mode about the connection status and what data is being requested for reflection.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the -v/-vv command paths for connection setup and server reflection, using the reported proxy and timeout examples as reproducible cases. Done means verbose mode exposes useful connection and reflection-request diagnostics for these failures without changing normal output.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
cli, networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.