Hi! While working on HBASE-28725, I realized that in HBase 3+ the REST protobuf definition files have been moved to hbase-shaded-protobuf, and the package name has also been renamed.
While I fully agree with the move to using the thirdparty protobuf library (in fact I'd like to backport that change to 2.x), I think that moving the .proto files and renaming the package was not a good idea. The REST interface does not use the HBase patched features of the protobuf library, and if we want to maintain any pretense that the REST protobuf encoding is usable by non-java code, then we should not use it in the future either. (If we ever decide to use the patched features for performance reasons, we will need to define new protobuf messages for that anyway) Protobuf does not use the package name on the wire, so wire compatibility is not an issue. In the unlikely case that someone has implemented an independent REST client that uses protobuf encoding, this will also ensure compatibility with the 3.0+ .protoc definitions. My proposal is: HBASE-28726 <https://issues.apache.org/jira/browse/HBASE-28726> Revert REST protobuf package to org.apache.hadoop.hbase.shaded.rest *This applies only to branch-3+:* 1. Move the REST .proto files and compiling back to the hbase-rest module (but use the same protoc compiler that we use now) 2. Revert the package name of the protobuf messages to the original 3. No other changes, we still use the thirdparty protobuf library. The other issue is that on HBase 2.x the REST client still requires unshaded protobuf 2.5.0 which brings back all the protobuf library conflicts that were fixed in 3.0 and by hbase-shaded-client. To fix this, my proposal is: HBASE-28725 <https://issues.apache.org/jira/browse/HBASE-28725> Use thirdparty protobuf for REST interface in HBase 2.x *This applies only to branch-2.x:* 1. Backport the code changes that use the thirdparty protobuf library for REST to branch-2.x With these two changes, the REST code would be almost identical on every branch, easing maintenance. What do you think ? Istvan