[
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