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-13784) Add Async Client Table API
Date Thu, 28 May 2015 14:17:03 GMT

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

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

I am looking into what and how to add actions to the AsyncTable. I would like to propose a
bit different and simpler Api than is currently implemented in Table. All mutations go through
mutate method and batch is eliminated. (I will ignore the coprocessor calls for now until
the basic Api is clear)

* 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
* mutate(List<Mutation>): ResponsePromise<Void> - Will not accept Append and Increment
because of nonce requirement. 
* mutate(RowMutations): ResponsePromise<Void> - Will not accept Append and Increment
* mutate(List<RowMutations>): ResponsePromise<Void> - Will not accept Append and
Increment
* 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 

Mutate with multiple mutations will check the writeBuffer and write packages to each region
if its writeBuffer limit is reached or when there are no mutations left.

Instead of the batch calls I would like to introduce a Promise that can manage multiple promises
which I would like to call it PromiseKeeper.  You add the promises of multiple calls to that
PromiseKeeper and if all succeed that promise fires or if one fails that promise also fails.
You can then get the results from an Array in the same order as you added the promises. This
is also to replace the AsyncProcess.

AsyncResultScanner. Am thinking of changing the workflow of the scanner for Async to better
fit an Async workflow. Instead of next calls and an internal buffer I would like to create
a nextBatch call and a way to set batch size. So this way the call and the result handling
are combined. A promise on each next call makes no sense.

What do you think?

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

Mime
View raw message