[ 
https://issues.apache.org/jira/browse/HBASE-25340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17241005#comment-17241005
 ] 

Yongle Zhang commented on HBASE-25340:
--------------------------------------

Hi [~pankajkumar], do you mean a PR for the static checker?  

> Protobuf Mesage Incompatibility Detector
> ----------------------------------------
>
>                 Key: HBASE-25340
>                 URL: https://issues.apache.org/jira/browse/HBASE-25340
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 2.3.3, 2.2.6
>            Reporter: junwen yang
>            Priority: Major
>         Attachments: protoCompatibility.txt
>
>
> Regarding the issue 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.
>  # The tag number of a field has been changed, as described in 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.3, and master, and we found 37 
> 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