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

Jurriaan Mous commented on HBASE-13784:
---------------------------------------

I sent out a mail to the mailinglist. Below my latest suggestion as I also 
added it to the mail. This version also includes a suggestion for the 
Coprocessor calls.

I am currently proposing the following methods in the simpler AsyncTable 
interface:
* exists(Get): ResponsePromise<Boolean>
* exists(List<Get>): ResponsePromise<Boolean[]>
* get(Get): ResponsePromise<Result>
* get(List<Get>): ResponsePromise<Result[]>
* mutate(Mutation): ResponsePromise<Void> - Instead of separate Put, Delete, 
Increment, IncrementValue and Append methods
* checkAndMutate(byte[], byte[], byte[], CompareOp, byte[], Mutation): 
ResponsePromise<Void> - Will not accept Append and Increment
* checkAndMutate(byte[], byte[], byte[], CompareOp, byte[], RowMutations): 
ResponsePromise<Void> - Will not accept Append and Increment
* getScanner(Scan): ResponsePromise<Void> - AsyncResultScanner
* coprocessorService(byte[]): AsyncCoprocessorRpcService
* coprocessorService(Class<T extends Service>, byte[] startkey, byte[] endkey, 
Batch.Call<T,R> callable): ResponsePromise<Map<byte[], R>>
* batchCoprocessorService(Descriptors.MethodDescriptor, Message, byte[] 
startKey, byte[] endKey, R responsePrototype): ResponsePromise<Map<byte[], R>>

To send multiple mutations you need to use a BufferedMutator which handles 
writeBuffers internally. I will look into making it possible to use it with 
Promises.

Batch operations will be able to be done by a PromiseKeeper which is a promise 
to which other promises can be added.

There will be a new AsyncResultScanner which handles incoming batches of 
result. It will not be possible to do next on it since this does not makes 
sense in an async context. There will be however a way to request a new batch 
with a promise.

> Add Async Client Table API
> --------------------------
>
>                 Key: HBASE-13784
>                 URL: https://issues.apache.org/jira/browse/HBASE-13784
>             Project: HBase
>          Issue Type: New Feature
>            Reporter: Jurriaan Mous
>            Assignee: Jurriaan Mous
>         Attachments: HBASE-13784-v1.patch, HBASE-13784.patch
>
>
> With the introduction of the Async HBase RPC Client it is possible to create 
> an Async Table API and more. This issue is focussed on creating a first async 
> Table API so it is possible to do any non deprecated Table call in an async 
> way.



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

Reply via email to