[ 
https://issues.apache.org/jira/browse/HBASE-8214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stack updated HBASE-8214:
-------------------------

    Attachment: 8214v2.txt

{code}
Removes engine and proxy.  Everywhere we now use the pb Interface explicitly 
with no
shim or decoration (the BlockingInterface to be more specific)

Compiles.  Most tests pass.  Need to fix the remainder.

Pluses:
+ Regularizes our rpc.  No more voodoo.
+ Removes at least two layers.  We could remove more if we go mess with protoc 
generation (as per Gary as per pb recommendation)

Cons:
+ Looks a bit ugly.  It is ugly the way we now do security information.  
Previous, the kerberos and token info was an interface
that the rpc interface implemented but now, because pb does the server and stub 
implementation creation and they cannot be
altered -- not w/o protoc messing, we have to pass the rpc interface and its 
security info separately (you cannot take the
BlockingService or BlockingStub class and get the token and kerberos Interfaces 
from them, not w/o a bunch of ugly
delegations).

Adds a class per rpc interface named *SecurityInfo.  For example, 
ClientServiceSecurityInfo and AdminServiceSecurityInfo.
Only purpose is the carrying of the Kerberos and Token info.  Gets passed when 
we setup an rpcserver and when we make
an rpcclient stub.

Removes the now useless IpcProtocol and ditto for interfaces that extended the 
pb blockinginterfaces such as
MasterAdminProtocol.  Instead, we now pass raw BlockingInterface and the 
kerberos and token interfaces are
moved to the new *SecurityInfo classes.

Bulk of changes are using BlockingInterface instead and class removals such as 
HBaseClientRPC and the support
for caching of method invocations.  For example, changing AdminProto:col to 
instead refer
to AdminService.BlockingInterface (If you looked at old AdminProtocol, it 
implemented BlockingInterface)

The new rpc classes are name RpcClient and RpcServerImplementation (there is a 
silly RpcServer Interface
that is in the way and needs at least some cleanup and probably just removal 
but can do that later)
These classes have facility to help make the protobuf stub on the client side.

Got rid of MasterService that only had isMasterRunning in it and added this 
method to MasterMonitor and
to MasterAdmin -- they both have it now; as said above we were trying to do 
some kinda inheritance where
both MasterMonitor and MasterAdmin both had isMasterRunning method.  Dodgy.

TODO:

+ See if I can make this cleaner still.  Would appreciate suggestion on the 
*SecurityInfo stuff.
+ Fix outstanding tests.
+ There is a bit of a mess still in HCOnnectionManager around isMasterRunning.  
It was working
because we had faked pb service inheritance, something it does not support and 
something that
the pb fellows are against in principal.  Did some fixup but it is typeless.  
Need to spend more
time on it.
{code}
                
> Remove proxy and engine, rely directly on pb generated Service
> --------------------------------------------------------------
>
>                 Key: HBASE-8214
>                 URL: https://issues.apache.org/jira/browse/HBASE-8214
>             Project: HBase
>          Issue Type: Bug
>          Components: IPC/RPC
>            Reporter: stack
>            Assignee: stack
>         Attachments: 8124.txt, 8214v2.txt
>
>
> Attached patch is not done.  Removes two to three layers -- depending on how 
> you count -- between client and rpc client and similar on server side 
> (between rpc and server implementation).  Strips ProtobufRpcServer/Client and 
> HBaseClientRpc/HBaseServerRpc.  Also gets rid of proxy.

--
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