Phil Yang commented on HBASE-15921:

As for 'async scan', i have not think about it carefully, maybe return one 
Future Object for each call "next()" ?
Talked with [~Apache9], we may have these options:
1: Use callback, when a Result is ready we run the callback provided by the 
user. But if we run the callback in the main loop, the callback must be simple. 
If users need complex logic, they must put the Result into their own 
thread(pool). And we may guarantee if the previous callback is not done, we can 
not run next row's callback.(It is simple if we have only one thread).
2: Like you said, for each next() we return a CompletableFuture. The first 
future is the first Result, the second is the second... We should keep the 
order if user call next for many times at first.
3: We return a future when the scanner init. And each time we get the Result 
from future, we also return a new CompletableFuture belonging to the next 

> Add first AsyncTable impl and create TableImpl based on it
> ----------------------------------------------------------
>                 Key: HBASE-15921
>                 URL: https://issues.apache.org/jira/browse/HBASE-15921
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Jurriaan Mous
>            Assignee: Jurriaan Mous
>         Attachments: HBASE-15921.patch, HBASE-15921.v1.patch
> First we create an AsyncTable interface with implementation without the Scan 
> functionality. Those will land in a separate patch since they need a refactor 
> of existing scans.
> Also added is a new TableImpl to replace HTable. It uses the AsyncTableImpl 
> internally and should be a bit faster because it does jump through less hoops 
> to do ProtoBuf transportation. This way we can run all existing tests on the 
> AsyncTableImpl to guarantee its quality.

This message was sent by Atlassian JIRA

Reply via email to