fullstorydev / fullstorydev/grpcurl

Reflection issues

Open
#22 13 comments 11 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.