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