[ 
https://issues.apache.org/jira/browse/PHOENIX-6448?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chen Feng updated PHOENIX-6448:
-------------------------------
    Description: 
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.

  was:
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{code}
Therefore, the following scheduleRenewLeaseTasks will be skipped and no 
exception is thrown.

 

1. scheduleRenewLeaseTasks not called

2. no renew task started

3. query will call PhoenixConection.addIteratorForLeaseRenewal() as usual

4. the scannerQueue is unlimited therefore it will always adding new items.

5. Full GC.


> 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.<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.3.4#803005)

Reply via email to