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)

Reply via email to