Samarth Jain created PHOENIX-1585: ------------------------------------- Summary: Provide a means of doing certain operations asynchronously when closing connections Key: PHOENIX-1585 URL: https://issues.apache.org/jira/browse/PHOENIX-1585 Project: Phoenix Issue Type: Improvement Reporter: Samarth Jain
When closing connections, there are times we do expensive RPC calls. For example - when doing hash joins, for clearing the hash cache on the region servers we execute a remove server cache operation for each region. {code} at org.apache.phoenix.cache.ServerCacheClient.removeServerCache(ServerCacheClient.java:285) at org.apache.phoenix.cache.ServerCacheClient.access$000(ServerCacheClient.java:80) at org.apache.phoenix.cache.ServerCacheClient$ServerCache.close(ServerCacheClient.java:140) at org.apache.phoenix.util.SQLCloseables.closeAllQuietly(SQLCloseables.java:53) at org.apache.phoenix.util.SQLCloseables.closeAll(SQLCloseables.java:43) at org.apache.phoenix.execute.BaseQueryPlan$1.close(BaseQueryPlan.java:235) at org.apache.phoenix.iterate.DelegateResultIterator.close(DelegateResultIterator.java:39) at org.apache.phoenix.execute.SortMergeJoinPlan$SemiAntiJoinIterator.close(SortMergeJoinPlan.java:419) at org.apache.phoenix.jdbc.PhoenixResultSet.close(PhoenixResultSet.java:153) at org.apache.phoenix.util.SQLCloseables.closeAllQuietly(SQLCloseables.java:53) at org.apache.phoenix.util.SQLCloseables.closeAll(SQLCloseables.java:43) at org.apache.phoenix.jdbc.PhoenixStatement.close(PhoenixStatement.java:964) at org.apache.phoenix.util.SQLCloseables.closeAllQuietly(SQLCloseables.java:53) at org.apache.phoenix.util.SQLCloseables.closeAll(SQLCloseables.java:43) at org.apache.phoenix.jdbc.PhoenixConnection.closeStatements(PhoenixConnection.java:386) at org.apache.phoenix.jdbc.PhoenixConnection.close(PhoenixConnection.java:400) {code} Another example is when we close connections, we sometimes return all the unused sequences back to the SYSTEM.SEQUENCE table. See PhoenixConnection#close(). Such book keeping operations that don't directly effect the request using Phoenix should be executed asynchronously. This way requests won't need to wait for such operations to complete making them faster. -- This message was sent by Atlassian JIRA (v6.3.4#6332)