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

Samarth Jain commented on PHOENIX-1751:
---------------------------------------

[~jamestaylor] - I am looking at code in HBase and it looks like preScannerOpen 
is still executed under lease. 

{code}
if (region.getCoprocessorHost() != null) {
          scanner = region.getCoprocessorHost().preScannerOpen(scan);
        }
        if (scanner == null) {
          scanner = region.getScanner(scan);
        }
        if (region.getCoprocessorHost() != null) {
          scanner = region.getCoprocessorHost().postScannerOpen(scan, scanner);
        }
{code}

but preScannerNext() isn't

{code}
lease = regionServer.leases.removeLease(scannerName);
          List<Result> results = new ArrayList<Result>();

          boolean done = false;
          // Call coprocessor. Get region info from scanner.
          if (region != null && region.getCoprocessorHost() != null) {
            Boolean bypass = region.getCoprocessorHost().preScannerNext(
              scanner, results, rows);
{code}


> Perform aggregations, sorting, etc, in the preScannerOpen instead of 
> postScannerOpen
> ------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-1751
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1751
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Lars Hofhansl
>            Assignee: James Taylor
>         Attachments: 1751-WIP-v2.txt, 1751-WIP-v2b.patch, 1751-WIP.txt, 
> PHOENIX-1751-v2c.patch, PHOENIX-1751.patch, PHOENIX-1751_v3.patch
>
>
> HBase retains a lease for every scanner. Then lease expires the scan will no 
> longer (be allowed to) work. The leases guard against the client going away, 
> and allow cleaning up resources if that happens.
> At various points HBase "suspends" the lease while the region server are 
> working on behalf of this scanner, so that the lease won't expire even though 
> the server is working on it.
> HBase does that during the scanning process. Crucially it suspends the leaser 
> after the scanner is opened, before next() is issued on it.
> The outcome of all this is that Phoenix executes aggregates, sorts, etc, with 
> the lease in place, and hence if these take a bit the lease can expire even 
> though the server was working on it.
> Phoenix should do this work in preScannerNext, being careful that the 
> precalculation is only performed once.
> I'll attach a sample patch soon.



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

Reply via email to