[
https://issues.apache.org/jira/browse/PHOENIX-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14368520#comment-14368520
]
Lars Hofhansl commented on PHOENIX-1751:
----------------------------------------
Upon closer examination it's actually not that simple. postScannerOpen returns
a wrapped scanner, that scanner has already done all the work. preScannerNext
does not allow return or overriding the scanner.
So postScannerOpen() would need to return a place-holder scanner, and the first
call to preScannerNext() would do all the expensive work (with the lease
suspended).
> Perform aggregations, sorting, etc, in the preScannerNext instead of
> postScannerOpen
> ------------------------------------------------------------------------------------
>
> Key: PHOENIX-1751
> URL: https://issues.apache.org/jira/browse/PHOENIX-1751
> Project: Phoenix
> Issue Type: Bug
> Reporter: Lars Hofhansl
>
> 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)