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

Dan Burkert commented on HBASE-9576:
------------------------------------

Recently I have been looking a lot at the RPCs as I'm trying to implement an 
HBase client.  I have some opinions on changes/cleanups that should happen.  
I'm coming at this as someone who, for the most part, doesn't know how far 
reaching these changes these would be, and in particular have not considered 
backwards-compatibility issues.  Nonetheless, here is a list of some of the 
more attainable cleanups I would like to see:

1) MultiRowMutationProcessorMessages.protos defines two messages, neither of 
which is ever used
2) Consider combining MasterAdmin.proto and MasterMonitor.proto. The 
distinction between the two is unclear, and there is a lot of overlap.  Which 
brings us to,
3) IsMasterRunning RPC is repeated in Master.proto, MasterAdmin.proto, and 
MasterMonitor.proto.  Consider removing Master.proto.
4) The confusion and overlap between the RowProcessor endpoint and 
MultiRowMutation exists even at the proto level.  This is definitely an issue 
throughout more (all) of the codebase, but nonetheless there are two different 
RPCs to accomplish the same task: atomically update intra-region cells.  My 
opinion is that these two things need to be combined all the way through the 
codebase, in the client, the protos, and the server.  In the case of protos, it 
should just be an addition RPC in Client.proto
5) Consider renaming Admin.proto to RegionServerAdmin.proto, and Client.proto 
to RegionClient.proto.  This would be more inline with MasterAdmin.proto and 
RegionServerStatus.proto.
6) I understand that message components being required/optional is usually 
driven by the peculiarities of ProtoBuffers and planning for backwards 
compatibility, but the .proto files should indicate which of the components in 
the messages are in actuality optional in the comments.  For instance, 
RPC.proto/RequestHeader.method_name is labeled as optional, but I think in the 
code now it is always included.  It is a barrier to creating a client if it is 
unclear which parts of messages are in actuality optional.

                
> Fixups in hbase protobuf
> ------------------------
>
>                 Key: HBASE-9576
>                 URL: https://issues.apache.org/jira/browse/HBASE-9576
>             Project: HBase
>          Issue Type: Task
>          Components: Protobufs
>            Reporter: stack
>
> Benoit was looking at out pbs.  Had following remarks:
> {code}
> ...there is something that doesn't make sense to me...a MutateRequest can 
> have a Condition...the Condition has row/family/qualifier...so for a single 
> KV CAS, one needs to specify the...row/family/qualifier twice...once in the 
> MutationProto and once in the Condition...not a huge deal...just weird
> ...also in Comparator.proto, both BinaryComparator and BinaryPrefixComparator 
> (and BitComparator too actually) would have been better off without 
> ByteArrayComparable, which seems a useless pb, but no big deal either
> {code}
> Will keep this issue open as place to accumulate pb fixups.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to