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

liu ming commented on HBASE-15076:
----------------------------------

thanks all for the comments. To answer Anoop,
bq, these additional scanners are scanners on?

In Apache Trafodion, we support ACID transaction on top of HBase. For a given 
transaction, all the Put/Delete should be visible only to the current 
transaction , so we save those updates in memory until the transaction do a 
commit. At commit time, do the real put/delete operation, so go into HBase 
store, so other reader can see the change.
So when the transaction is still active, not commit yet, and the same 
transaction do a scan, Trafodion needs to do a normal scan with start and end 
key, but if for same row, the transaction do a put, that new put value should 
be the real value of that Cell, so Trafodion wrap the Scan to merge those Put 
objects in the memory, and make Put in the memory win the compare; But this is 
still not all, if in the memory, there are delete object, we also need to 
filter out those Cells, so we new another additional scanner equiped with a 
delete filter, to filter out those rows that has a Delete object in the memory 
list.
So we need that method, since all these operations are done in Coprocessor, we 
need to make that method public. Currently, we just overload the HRegion class, 
which is intrusive. We hope HBase can make this change , so Trafodion can 
invoke it and no need to do the overloading.
I also feel this may has other usage, so it will be good to put this method in 
Region Interface.

I am new to HBase, so your help are very important.

thanks,
Ming 

> make the HRegion.getScanner(Scan scan, List<KeyValueScanner> 
> additionalScanners, boolean copyCellsFromSharedMem) to be public
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-15076
>                 URL: https://issues.apache.org/jira/browse/HBASE-15076
>             Project: HBase
>          Issue Type: Improvement
>          Components: regionserver
>            Reporter: liu ming
>            Assignee: liu ming
>
> HRegion method getScanner(Scan scan, List<KeyValueScanner> 
> additionalScanners, boolean copyCellsFromSharedMem) is protected.
> In Apache Trafodion, we need to invoke this getScanner method from a 
> coprocessor. Since it is protected, Trafodion must overload the HRegion class 
> and overload this method into a public method.
> It will be good to make this method public.
> It is very useful when one needs to combine several scan result in a single 
> scanner.
> thanks,
> Ming



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

Reply via email to