hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jurriaan Mous (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-15745) Refactor RPC classes to better accept async changes.
Date Fri, 06 May 2016 07:27:12 GMT

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

Mime
View raw message