You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "junwen yang (Jira)" <ji...@apache.org> on 2020/11/29 04:38:00 UTC
[jira] [Created] (HBASE-25340) Protobuf Mesage Incompatibility
Detector
junwen yang created HBASE-25340:
-----------------------------------
Summary: Protobuf Mesage Incompatibility Detector
Key: HBASE-25340
URL: https://issues.apache.org/jira/browse/HBASE-25340
Project: HBase
Issue Type: Bug
Affects Versions: 2.2.6, 2.3.3
Reporter: junwen yang
Attachments: protoCompatibility.txt
Regarding the issue https://issues.apache.org/jira/browse/HBASE-25238 caused by the incompatibility of protobuf message, we have created a static checker which keeps track of the proto file change, and detect potential incompatibility:
# Add/delete required field, which is exactly the case reported in [HBASE-25238|https://issues.apache.org/jira/browse/HBASE-25238].
# The tag number of a field has been changed, as described in [HDFS-9788|https://issues.apache.org/jira/browse/HDFS-9788.]. Also, the [protobuf guidelines |https://developers.google.com/protocol-buffers/docs/proto]suggests _each field in the message definition has a *unique number*. These numbers are used to identify your fields in the [message binary format|https://developers.google.com/protocol-buffers/docs/encoding], and should not be changed once your message type is in use_.
# A required field has been changed to optional, or an optional field has been changed to required. According to the guidelines in [protobuf official website|https://developers.google.com/protocol-buffers/docs/proto], *Required Is Forever* You should be very careful about marking fields as {{required}}. If at some point you wish to stop writing or sending a required field, it will be problematic to change the field to an optional field - old readers will consider messages without this field to be incomplete and may reject or drop them unintentionally. You should consider writing application-specific custom validation routines for your buffers instead.
We have applied our checker on the frequently maintained HBASE versions: rel/1.4.3, rel/1.6.0, rel/2.2.6, rel.2.3.0, and we found 22 potential problems as attached, which includes the one found in HBASE-25238.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)