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

Jurriaan Mous commented on HBASE-15745:
---------------------------------------

bq. My first reaction was, oh no, not more additions to the class hierarchy, 
but my second thought was that there is no way around it for now; later once 
async is the default, we can start peeling away the abandoned tiers.

Yes indeed, for now it is needed to cope with the differences of the async 
implementation where it would send back a Future. 

bq. Second, on ProtoRetryingCallable, there is no protobuf in the Interface – 
Proto usually implies PB around these parts but you seem to be referencing 
prototype here? – nor is there a call method (no call when we async? Or its 
signature is different?). Is this Interface a Decorator or a Base Interface? If 
latter, RetryingCallableBase? If former RetryingCallableDecorator... ugly names 
but more clear what they are about. Just suggestions.

Renamed to RetryingCallableBase

bq. RetryingCallable<?> did not give you sufficient leeway for introducing an 
async version?

It is possible to do both implementations in RetryingCallable and to put a 
Future<T> as Type. Although the sync call version says it is able to return a 
Exception while in Async it is handled by the Future. So a separate version has 
a cleaner interface. What would you prefer? Use old and change less or 
introduce a new one which is specific for Async without throwing exception?

> Refactor RPC classes to better accept async changes.
> ----------------------------------------------------
>
>                 Key: HBASE-15745
>                 URL: https://issues.apache.org/jira/browse/HBASE-15745
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Jurriaan Mous
>            Assignee: Jurriaan Mous
>         Attachments: HBASE-15745-v1.patch, HBASE-15745-v2.patch, 
> HBASE-15745.patch
>
>
> The class layout needs to be changed to better accept Async versions of the 
> same classes. This is a partly commit of the patch in HBASE-13784
> Classes turned interface:
> * AsyncRpcChannel with AsyncRpcChannelImpl as implementation
> * CoprocessorRpcChannel with SyncCoprocessorRpcChannel for implementation
> New lower-level abstractions:
> * ProtoRetryingCallable below RetryingCallable
> * AbstractRegionServerCallable below RegionServerCallable



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to