grpc / grpc/grpc-node

Server Reflection does not handle reserved keyword

Open
#2,709 0 comments 4 reactions 0 assignees View on GitHub
package: @grpc/reflection
Dominant language
TypeScript
Stars
4.8k
Forks
716
Avg merge
2d 3h
Merged PRs (30d)
10

Description

### Problem description
Using ReflectionService from @grpc/reflection, and a .proto with a message "reserved 2", I get this error on grpcurl and also from python's grpcio-reflection:

`Failed to list methods for service "testservice.TestService": proto: message "testservice.Test" reserved ranges has invalid range: 2 to 1`

No issue with grpcurl 1.8.7, but present on 1.8.9. No issues with grpc client using `grpc-js-reflection-client`

### Reproduction steps

server.js:

```
const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
keepCase: true,
longs: String,
enums: String,
defaults: false,
oneofs: false,
});

const testService = grpc.loadPackageDefinition(packageDefinition);

// Define the server
const server = new grpc.Server();
const reflection = new ReflectionService(packageDefinition);

reflection.addToServer(server);
```

test.proto:

```
syntax = "proto3";

package testservice;

message Test {
string something = 1;
reserved 2;
}

message GetTest {
Test the_test = 1;
}

message Empty {}

service TestService {
rpc GetTest(Empty) returns (Test) {}
}
```

```
grpcurl -plaintext localhost:8080 list testservice.TestService
Failed to list methods for service "testservice.TestService": proto: message "testservice.Test" reserved ranges has invalid range: 2 to 1`
```

### Environment
- MacOS Monterey 12.1, Apple M1 Pro
- Node version 20.11.0
- Node installation method nvm
- Package name and version @grpc/grpc-js@1.10.5

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.