[ https://issues.apache.org/jira/browse/PHOENIX-6826?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Viraj Jasani updated PHOENIX-6826: ---------------------------------- Fix Version/s: 5.2.0 5.1.3 > Don't invalidate meta cache if CQSI#getTableRegionLocation encounters > IOException. > ---------------------------------------------------------------------------------- > > Key: PHOENIX-6826 > URL: https://issues.apache.org/jira/browse/PHOENIX-6826 > Project: Phoenix > Issue Type: Improvement > Components: core > Affects Versions: 4.16.1 > Reporter: Rushabh Shah > Priority: Major > Fix For: 5.2.0, 5.1.3 > > > We have 2 places in CQSI where we invalidate meta data cache (by setting > reload=true) if CQSI#getTableRegionLocation encounters IOException. > See code below > @Override > public HRegionLocation getTableRegionLocation(byte[] tableName, byte[] > row) throws SQLException { > /* > * Use HConnection.getRegionLocation as it uses the cache in > HConnection, to get the region > * to which specified row belongs to. > */ > int retryCount = 0, maxRetryCount = 1; > boolean reload =false; > while (true) { > try { > return > connection.getRegionLocator(TableName.valueOf(tableName)).getRegionLocation(row, > reload); > } catch (org.apache.hadoop.hbase.TableNotFoundException e) { > String fullName = Bytes.toString(tableName); > throw new > TableNotFoundException(SchemaUtil.getSchemaNameFromFullName(fullName), > SchemaUtil.getTableNameFromFullName(fullName)); > } catch (IOException e) { > if (retryCount++ < maxRetryCount) { // One retry, in case > split occurs while navigating > reload = true; > continue; > } > throw new > SQLExceptionInfo.Builder(SQLExceptionCode.GET_TABLE_REGIONS_FAIL) > .setRootCause(e).build().buildException(); > } > } > } > Once we set reload flag to true, it will invalidate the cache from hbase > client. This means client will make RPC request to hbase:meta region server. > Consider the situation where multiple threads across different jvms make call > to getRegionLocation and if not found in cache, it will make an RPC request. > We have seen requests to hbase:meta region server so high that hbase:meta was > overwhelmed for hours and actual customer queries were failing. > Do we need to invalidate the metadata cache? -- This message was sent by Atlassian Jira (v8.20.10#820010)