Hi, It seems that the UPDATE_CACHE_FREQUENCY setting is ignored on tables with a ROW_TIMESTAMP column set. This results in an RPC call to fetch the SYSTEM.CATALOG table for every query to such a table and resulting hotspotting on the node assigned the system catalog region.
I was wondering if there is any way to avoid these calls on such a table? A little digging led me to PHOENIX-4187<https://issues.apache.org/jira/browse/PHOENIX-4187> <https://issues.apache.org/jira/browse/PHOENIX-4187> which introduced the change to ignore the cache for tables with a row timestamp column. I was wondering what the reasoning / thinking was for the stipulation that tables with row timestamp column cannot be cached? For reference we are using 4.14.0-HBase-1.4 version of the driver, which I realise is quite old, but if anyone has any incite that would be helpful. Below is the stack trace of when the cache is being updated. - waiting on <0x6cb6aa28> (a java.util.concurrent.FutureTask) - locked <0x6cb6aa28> (a java.util.concurrent.FutureTask) at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) at java.util.concurrent.FutureTask.get(FutureTask.java:191) at org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1787) at org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1743) at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1362) at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1343) at org.apache.phoenix.query.ConnectionQueryServicesImpl.getTable(ConnectionQueryServicesImpl.java:1560) at org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:643) at org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:538) at org.apache.phoenix.compile.FromCompiler$BaseColumnResolver.createTableRef(FromCompiler.java:573) at org.apache.phoenix.compile.FromCompiler$SingleTableColumnResolver.<init>(FromCompiler.java:391) at org.apache.phoenix.compile.FromCompiler.getResolverForQuery(FromCompiler.java:228) at org.apache.phoenix.compile.FromCompiler.getResolverForQuery(FromCompiler.java:206) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:482) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:456) at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:302) at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:291) at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:290) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:283) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:193) at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:698) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:639) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:690) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:717) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:767) at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:211) at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:219) Many thanks Fergus Fergus Nelson Infrastructure Architect [image.jpeg] fnel...@reliaquest.com / ReliaQuest.com<https://reliaquest.com/>