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

Don Brinn commented on PHOENIX-2381:
------------------------------------

[~jamestaylor] do you mean connections *to* Phoenix?  When we pool connections 
to Phoenix, we pool them per-tenant (i.e. do not try to re-use a connection 
that was established for one tenant for use by a different tenant).  Also, I am 
seeing this problem even when I connect to Phoenix using sqlline.py, specifying 
the TenantId property when establishing the connection.  I have been assuming 
that with sqlline there is no connection pooling, but I really have very little 
experience with Phoenix and tools to connect to it.

> Inner Join with any table or view with Multi_Tenant=true causes "could not 
> find hash cache for joinId" error
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-2381
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2381
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.6.0
>         Environment: This is with Phoenix version 4.6.0 and HBase version 
> 0.98.4.2.2.6.0-2800-hadoop2.
>            Reporter: Don Brinn
>            Assignee: Maryann Xue
>              Labels: join, joins, multi-tenant
>         Attachments: tmp-2381.patch
>
>
> I am seeing the following error when doing an INNER JOIN of a view with 
> MULTI_TENANT=true with any other table or view:
> java.lang.RuntimeException: org.apache.phoenix.exception.PhoenixIOException: 
> org.apache.phoenix.exception.PhoenixIOException: 
> org.apache.hadoop.hbase.DoNotRetryIOException: Could not find hash cache for 
> joinId: Ys�0��%�. The cache might have expired and have been removed.
>         at 
> org.apache.phoenix.coprocessor.HashJoinRegionScanner.<init>(HashJoinRegionScanner.java:95)
>         at 
> org.apache.phoenix.coprocessor.ScanRegionObserver.doPostScannerOpen(ScanRegionObserver.java:212)
>         at 
> org.apache.phoenix.coprocessor.BaseScannerRegionObserver.postScannerOpen(BaseScannerRegionObserver.java:178)
>         at 
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.postScannerOpen(RegionCoprocessorHost.java:1931)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.scan(HRegionServer.java:3178)
>         at 
> org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:29994)
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2078)
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
>         at 
> org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:114)
>         at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:94)
>         at java.lang.Thread.run(Thread.java:745)
>  
>         at sqlline.IncrementalRows.hasNext(IncrementalRows.java:73)
>         at sqlline.TableOutputFormat.print(TableOutputFormat.java:33)
>         at sqlline.SqlLine.print(SqlLine.java:1653)
>         at sqlline.Commands.execute(Commands.java:833)
>         at sqlline.Commands.sql(Commands.java:732)
>         at sqlline.SqlLine.dispatch(SqlLine.java:808)
>         at sqlline.SqlLine.begin(SqlLine.java:681)
>         at sqlline.SqlLine.start(SqlLine.java:398)
>         at sqlline.SqlLine.main(SqlLine.java:292)
>  
> This is with Phoenix version 4.6.0 and HBase version 
> 0.98.4.2.2.6.0-2800-hadoop2.
>  
> This seems very strongly related to the MULTI_TENANT=true property on a view 
> or table.  I see the error whenever the view has MULTI_TENANT=true and I have 
> a tenant-specific connection to Phoenix.  I do not see the problem if the 
> MULTI_TENANT=true property is not set on the view or if I do not have a 
> tenant-specific connection to Phoenix.
>  
> Here is an example SQL statement that has this error when the view INVENTORY 
> has the MULTI_TENANT=true property and I have a tenant-specific connection, 
> but that succeeds in other cases. (The view PRODUCT_IDS is not Multi-Tenant.)
> SELECT * FROM INVENTORY INNER JOIN PRODUCT_IDS ON (PRODUCT_ID = INVENTORY.ID)
>  
> Note:  "INNER JOIN" fails under these conditions, as does "LEFT OUTER JOIN".  
> However, "RIGHT OUTER JOIN" and "FULL OUTER JOIN" do work.  Also, if I tell 
> Phoenix to use a Sort Join for the Inner Join or Left Outer Join then it does 
> work, e.g.  SELECT /\*+ USE_SORT_MERGE_JOIN\*/ * FROM INVENTORY INNER JOIN 
> PRODUCT_IDS ON (PRODUCT_ID = INVENTORY.ID); works.
>  
> This seems to be the same problem that was discussed previously in this 
> mailing list:  
> https://mail-archives.apache.org/mod_mbox/phoenix-user/201507.mbox/%3ccaotkwx5xfbwkjf--0k-zj91tfdqwfq6rmuqw0r_lojcnj1a...@mail.gmail.com%3E
>  



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

Reply via email to