-
Notifications
You must be signed in to change notification settings - Fork 1.5k
GH-3175: support protobuf library version 4 #3352
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The getSyntax method on messageDescriptor.getFile() got removed in protobuf version 4. This change gets the syntax information directly from the proto, this works in protobuf v3 and v4. fixes apache#3175 see also apache#3182
Fokko
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes sense to me 👍
| if ("editions".equals(syntax)) { | ||
| throw new UnsupportedOperationException("protocol buffers 'editions' not supported"); | ||
| } | ||
| boolean isProto2 = !"proto3".equals(syntax); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wouldn't it be better to check the versions explicitly, and raise on anything else (for example editions, as above).
| boolean isProto2 = !"proto3".equals(syntax); | |
| boolean isProto2 = "proto2".equals(syntax); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wanted to keep the logic the same as in the protobuf library (v4), they have this code:
Edition getEdition() {
switch (proto.getSyntax()) {
case "editions":
return proto.getEdition();
case "proto3":
return Edition.EDITION_PROTO3;
default:
return Edition.EDITION_PROTO2;
}
}
In my tests the value of syntax was an empty string (not "proto2") for proto2 files, this is why it just compares against "editions" and "proto3".
|
Thanks for this! Any chances a new release would be prepared anytime soon for this ? |
|
Hey @rahul-roy-glean That's a good point! I would recommend reaching out on the dev-list: https://lists.apache.org/[email protected] |
Rationale for this change
The getSyntax method on messageDescriptor.getFile() got removed in protobuf version 4.
It crashes when a user updates to protobuf 4 and uses the parquet library.
What changes are included in this PR?
This change gets the syntax information directly from the proto, this works in protobuf v3 and v4.
Are these changes tested?
yes, running the existing tests (with protobuf 3).
Are there any user-facing changes?
Closes #3175
Related to #3182