Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase, mail # dev - Use of required keyword in protobuf messages


Copy link to this message
-
Use of required keyword in protobuf messages
Chris Trezzo 2012-08-06, 22:39
Hi All,

I was looking through the .proto files and noticed there are a lot of
fields that are marked as required. I am by no means a protobuf expert, but
I was wondering what advantage do we actually get in making fields required?

I understand that if we don't use the required keyword we would have to
implement custom application logic, but the flexibility we gain from having
all the fields optional seems to outweigh that work. In addition, we will
already have to add logic to HBase to handle version compatibility, so it
seems natural to implement the required logic as part of that layer. This
would allow us to change or delete any message field and maintain wire
compatibility.

Quote from the protobuf language guide (
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.
Some engineers at Google have come to the conclusion that using
requireddoes more harm than good; they prefer to use only
optional and repeated. However, this view is not universal."

Thoughts?

Thanks,
Chris Trezzo