[ 
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)

Reply via email to