fullstorydev / fullstorydev/grpcurl
Reflection issues
- Dominant language
- Go
- Stars
- 12.8k
- Forks
- 580
- Avg merge
- 1h 8m
- Merged PRs (30d)
- 5
Description
I have a proto set with 3 gRPC services (and some external dependencies) that compiles appropriately on the protobuf side, compiles and runs in go, and clients work when interacting with the server, but reflection fails within `grpcurl` on the 2 services which have dependencies in other packages.
I recreated a fake weatherman repo with a similar setup to provide an example.
proto & generated code repo: https://github.com/jamisonhyatt/grpc-multi-pkg-protos
Client gist: https://gist.github.com/jamisonhyatt/dd9d93b978472c960c9fa81b9f39fcf9
Here's `tree` of the protoset
```
└── protos
├── desktop_svc
│ └── desktop_svc.proto
├── external
│ ├── location
│ │ └── location.proto
│ └── weather
│ ├── hurricanes.proto
│ └── weather.proto
├── mobile_svc
│ └── mobile_svc.proto
└── weatherman_svc.proto
```
`list` returns
```
desktop.Desktop
grpc.reflection.v1alpha.ServerReflection
mobile.Mobile
weatherman.Weatherman
```
`weatherman.Weatherman.Healthcheck` returns
```
{
"healthy": true
}
```
`list mobile.Mobile` throws an error
```
Failed to list methods for service "mobile.Mobile": Symbol not found: mobile.Mobile
caused by: File not found: location/location.proto
```
I'd like to avoid refactoring the packages (which does work, but I have to flatten them) but I'd like to know of this is a symptom of how I have the packae imports, the gRPC reflection service, or the reflection in `grpcurl` itself.
My feeling though, is that if the protos compile, the server compiles, the reflection service should have enough information to define the types. Any feedback is appreciated.
Edit: just for posterity, building the protosets and using those with grpcurl does work.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.