[ 
https://issues.apache.org/jira/browse/PHOENIX-3064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15372578#comment-15372578
 ] 

Lars Hofhansl commented on PHOENIX-3064:
----------------------------------------

>From PHOENIX-2885 it seems the problem is with deleted tables. Can we reliably 
>detect all scenarios and _always_ do this lazily?
(And get rid of UPDATE_CACHE_FREQUENCY altogether?)

I just tried with two client processes:
* When a table is created in one client we retry in the other client anyway 
upon a TableNotFoundException
* When a table is dropped in one client, we get a different exception, which is 
not the end of the world. Seems we could make that the same if we unwrap the 
inner exception correctly and pass it up (see exception below).

Can we do this:
# Never update the cache as long as the query compiles and executes fine.
# use UPDATE_CACHE_FREQUENCY only to rate limit update cache in an incorrect 
query is executed repeatedly (imagine a client that tries to run a query on the 
missing table over and over)

?

{code}
Error: org.apache.phoenix.exception.PhoenixIOException: X (state=08000,code=101)
org.apache.phoenix.exception.PhoenixIOException: 
org.apache.phoenix.exception.PhoenixIOException: X
        at 
org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:111)
        at 
org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:769)
        at 
org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:715)
        at 
org.apache.phoenix.iterate.RoundRobinResultIterator.getIterators(RoundRobinResultIterator.java:176)
        at 
org.apache.phoenix.iterate.RoundRobinResultIterator.next(RoundRobinResultIterator.java:91)
        at 
org.apache.phoenix.jdbc.PhoenixResultSet.next(PhoenixResultSet.java:778)
        at sqlline.BufferedRows.<init>(BufferedRows.java:37)
        at sqlline.SqlLine.print(SqlLine.java:1649)
        at sqlline.Commands.execute(Commands.java:833)
        at sqlline.Commands.sql(Commands.java:732)
        at sqlline.SqlLine.dispatch(SqlLine.java:807)
        at sqlline.SqlLine.begin(SqlLine.java:681)
        at sqlline.SqlLine.start(SqlLine.java:398)
        at sqlline.SqlLine.main(SqlLine.java:292)
Caused by: java.util.concurrent.ExecutionException: 
org.apache.phoenix.exception.PhoenixIOException: X
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:206)
        at 
org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:764)
        ... 12 more
Caused by: org.apache.phoenix.exception.PhoenixIOException: X
        at 
org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:111)
        at 
org.apache.phoenix.iterate.TableResultIterator.initScanner(TableResultIterator.java:176)
        at 
org.apache.phoenix.iterate.TableResultIterator.next(TableResultIterator.java:126)
        at 
org.apache.phoenix.iterate.LookAheadResultIterator$1.advance(LookAheadResultIterator.java:47)
        at 
org.apache.phoenix.iterate.LookAheadResultIterator.init(LookAheadResultIterator.java:59)
        at 
org.apache.phoenix.iterate.LookAheadResultIterator.peek(LookAheadResultIterator.java:73)
        at 
org.apache.phoenix.iterate.ParallelIterators$1.call(ParallelIterators.java:121)
        at 
org.apache.phoenix.iterate.ParallelIterators$1.call(ParallelIterators.java:106)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
org.apache.phoenix.job.JobManager$InstrumentedJobFutureTask.run(JobManager.java:183)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.hadoop.hbase.TableNotFoundException: X
        at 
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1342)
        at 
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1179)
        at 
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.relocateRegion(HConnectionManager.java:1156)
        at 
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionLocation(HConnectionManager.java:977)
        at 
org.apache.hadoop.hbase.client.RegionServerCallable.prepare(RegionServerCallable.java:74)
        at 
org.apache.hadoop.hbase.client.ScannerCallable.prepare(ScannerCallable.java:125)
        at 
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
        at 
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:91)
        at 
org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:289)
        at 
org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:190)
        at 
org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:185)
        at 
org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:111)
        at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:780)
        at 
org.apache.phoenix.iterate.TableResultIterator.initScanner(TableResultIterator.java:173)
        ... 11 more
{code}


> Reduce  client time spent in createTableRef and ARRQ for point queries
> ----------------------------------------------------------------------
>
>                 Key: PHOENIX-3064
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3064
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Lars Hofhansl
>         Attachments: PhoenixGetTableAndARRQ.png
>
>
> Did some profiling for point queries (I actually wanted to test the HBase 
> server side).
> I found that a _lot_ of client time is spent in 
> FromCompiler.getResolverForQuery (in createTableRef) and also in 
> AbstractRoundRobinQueue.offer.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to