The coprocessor related methods are in RawAsyncTable interface.

Peter Somogyi <[email protected]>于2017年10月14日 周六08:16写道:

> Hi,
>
> I started to work on HBASE-18978 (Align the methods in Table and
> AsyncTable) and I would appreciate some feedback from you.
>
> To make it simpler to compare the differences between Table and AsyncTable
> I put together a spreadsheet.
>
> https://docs.google.com/spreadsheets/d/15DdDp3Yljlb_Mrd3BQuoyzqnhomJhTM8bHvmEa6t6Jc/edit?usp=sharing
>
> I categorized them into the following groups:
>
> * RPC timeouts
> - Both interfaces have the same functionality, however, in AsyncTable the
> TimeUnit can be set for each method.
> - The getRpcTimeout is deprecated in Table from version 2.0.0, but it is
> not deprecated in AsyncTable.
> We can make the RPC timeout handling aligned in the 2 interfaces. My
> recommendation is to go with the ones in AsyncTable.
>
> * Coprocessor
> - Methods that are related to Coprocessors are only available in Table.
> What is the reason for this?
>
> * List with xAll operations
> - We have the ability to run operation (get, delete, put, batch) in batch
> mode using a List input parameter in both interfaces. AsyncTable has
> additional methods called xAll(List) (e.g. getAll) where we have the same
> operations but the whole operation fails if there are any failures.
> - The methods related to {exists} differ from the previous operations. To
> compare it with {get}:
> Table                                                 | AsyncTable
>
> -------------------------------------------------------------------------------------------------------------------------------
> Result get(Get get)                           | CompletableFuture<Result>
> get(Get get)
> Result[] get(List<Get> gets)             | List<CompletableFuture<Result>>
> get(List<Get> gets)
> -                                                        |
> CompletableFuture<List<Result>> getAll(List<Get> gets)
>
> -------------------------------------------------------------------------------------------------------------------------------
> boolean exists(Get get)                    | CompletableFuture<Boolean>
> exists(Get get)
> boolean[] existsAll(List<Get> gets)  | List<CompletableFuture<Boolean>>
> exists(List<Get> gets)
> -                                                        |
> CompletableFuture<List<Boolean>> existsAll(List<Get> gets)
> Should we align these methods?
>
> - Method {batch} is also similar to these operations, however, the
> signature is different between Table and AsyncTable interfaces.
> Additionally, Table had a method {batchCallback} which is missing from
> AsyncTable.
>
> * Checks
> Check and mutate methods are way different. Table has checkAndx methods
> (some of them are deprecated), but AsyncTable has an interface called
> CheckAndMutateBuilder and these kind of operations are handled through
> that.
>
> * Scan
> Both interfaces include getScanner methods with the same signature.
> Additionally, AsyncTable has {scan} and {scanAll} methods which are not
> part of Table interface.
>
> * Different return types
> There are 2 methods that does the same in the 2 interfaces but have
> different return types. The ones in Table return with an array and the ones
> from AsyncTable return with a List. HBASE-18912 is a similar issue on Admin
> interface. Changing only return type is difficult. Do we need to deal with
> this problem?
>
> Thanks,
> Peter
>

Reply via email to