[jira] [Commented] (PHOENIX-6448) ConnectionQueryServicesImpl init failure may cause Full GC.
[ https://issues.apache.org/jira/browse/PHOENIX-6448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=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. 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)
[jira] [Commented] (PHOENIX-6448) ConnectionQueryServicesImpl init failure may cause Full GC.
[ https://issues.apache.org/jira/browse/PHOENIX-6448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17551916#comment-17551916 ] Kadir Ozdemir commented on PHOENIX-6448: [~larsh], I agree with you that we should find out if this is really needed. I will spend more time on this but looks like we do not need it anymore. > 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 > > 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. 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)
[jira] [Commented] (PHOENIX-6448) ConnectionQueryServicesImpl init failure may cause Full GC.
[ https://issues.apache.org/jira/browse/PHOENIX-6448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17325189#comment-17325189 ] Lars Hofhansl commented on PHOENIX-6448: With [~kadir]'s client paced iteration, do we even still need the lease-renewal, or can we just get rid of it? > 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 >Priority: Major > > 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. 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.3.4#803005)
[jira] [Commented] (PHOENIX-6448) ConnectionQueryServicesImpl init failure may cause Full GC.
[ https://issues.apache.org/jira/browse/PHOENIX-6448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17324913#comment-17324913 ] Chen Feng commented on PHOENIX-6448: There're several ways to fix this bug. Solution A: call scheduleRenewLeaseTasks() before return null. Solution B: scannerQueue is inited with a capacity. Solution C: if no renew task is started, no NOT add items into scannerQueue. I think Solution A is better? > 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 >Priority: Major > > 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. 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.3.4#803005)