[
https://issues.apache.org/jira/browse/PHOENIX-6448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17554287#comment-17554287
]
Kadir Ozdemir commented on PHOENIX-6448:
----------------------------------------
Page filter used for client paced iteration wraps the existing filter of a
scan. Currently, page filter is not used if a scan does not have any filter. A
filter adds some extra latency to scans and in order not to impact the
performance we decided this behavior for 4.16. I think we should not have done
it and instead we should have enabled page filter in all cases. The attached
patch is to enable page filter always and also disable leasing by default.
[~larsh], There is one case page filter does not cover. This case happens when
the client does not issue the next call for a long time. Please note that page
filter makes sure the next call (RPC) on a scanner will not time out and during
this next call the scanner will not time out either. Howeber, if for some
reasons, the client does not issue the next call, the page filter will not
help.
> ConnectionQueryServicesImpl init failure may cause Full GC.
> -----------------------------------------------------------
>
> Key: PHOENIX-6448
> URL: https://issues.apache.org/jira/browse/PHOENIX-6448
> Project: Phoenix
> Issue Type: Bug
> Reporter: Chen Feng
> Assignee: Kadir Ozdemir
> Priority: Major
> Attachments: PHOENIX-6448.master.001.patch
>
>
> in ConnectionQueryServicesImpl.init()
> In some cases(e.g. the user has not permissions to create SYSTEM.CATALOG),
> there's only LOGGER.WARN and return null directly.
> {code:java}
> // Some comments here
> {
> ...
> if (inspectIfAnyExceptionInChain(e, Collections.<Class<? extends
> Exception>> singletonList(AccessDeniedException.class))) {
> // Pass
> LOGGER.warn("Could not check for Phoenix SYSTEM tables," +
> " assuming they exist and are properly configured");
>
> checkClientServerCompatibility(SchemaUtil.getPhysicalName(SYSTEM_CATALOG_NAME_BYTES,
> getProps()).getName());
> success = true;
> }
> ...
> return null;
> }
> ...
> scheduleRenewLeaseTasks();
> {code}
> Therefore, the following scheduleRenewLeaseTasks will be skipped and no
> exception is thrown.
>
> 1. scheduleRenewLeaseTasks not called
> 2. no renew task started
> 3. queries will call PhoenixConection.addIteratorForLeaseRenewal() as usual
> 4. the scannerQueue is unlimited therefore it will always adding new items.
> 5. Full GC.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)