alex kamil created PHOENIX-2672:
-----------------------------------

             Summary: OutOfOrderScannerNextException in SELECT DISTINCT query 
over tenant connection
                 Key: PHOENIX-2672
                 URL: https://issues.apache.org/jira/browse/PHOENIX-2672
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.6.0
            Reporter: alex kamil


I'm getting below exception in SELECT DISTINCT query using tenant-specific 
connection  with phoenix 4.6-HBase-1.0-cdh5.5 . 

The exception disappears if I either switch to non-tenant connection, or remove 
DISTINCT from the query.

Caused by: org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException: 
org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException:
Expected nextCallSeq: 1 But the nextCallSeq got from client: 0; 
request=scanner_id: 2326 number_of_rows: 100 close_scanner: false 
next_call_seq: 0 client_handles_partials: true client_handles_heartbeats: true

I'm using phoenix 4.6 for cloudera cdh5.5.1 community edition
 
https://github.com/chiastic-security/phoenix-for-cloudera/tree/4.6-HBase-1.0-cdh5.5
 


Below the test case, error log and hbase-site.xml settings:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; 
public class Test {
       public static void main (String [] args){
              Connection conn = null;
              String tenant  = SYSTEMTENANT;
              String url  = "my.ip";
              System.out.println("trying to initialize tenant-specific 
connection to hbaseUrl="+url+" for tenant="+tenant);
              Properties connProps = new Properties();
              connProps.setProperty("TenantId", tenant);
              String query = "SELECT DISTINCT ROWKEY,VS FROM TABLE1 ORDER BY VS 
DESC";
              try {
                     conn = DriverManager.getConnection("jdbc:phoenix:"+url, 
connProps);
                     Statement st = conn.createStatement();
                     ResultSet resultSet = st.executeQuery(query);
                     while(resultSet.next())
                     {
                           String rowKey = resultSet.getString(1);
                           String versionSerial = resultSet.getString(2);
                           System.out.println("rowkey="+rowKey+", 
versionserial="+versionSerial);
                     }
              } catch (SQLException e) {
                     //     logger.error(e);
                     e.printStackTrace();
              }
       }
}
Stack trace: 
org.apache.phoenix.exception.PhoenixIOException: 
org.apache.phoenix.exception.PhoenixIOException: Failed after retry of 
OutOfOrderScannerNextException: was there a rpc timeout?
       at 
org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:108)
       at 
org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:558)
       at 
org.apache.phoenix.iterate.MergeSortResultIterator.getIterators(MergeSortResultIterator.java:48)
       at 
org.apache.phoenix.iterate.MergeSortResultIterator.minIterator(MergeSortResultIterator.java:84)
       at 
org.apache.phoenix.iterate.MergeSortResultIterator.next(MergeSortResultIterator.java:111)
       at 
org.apache.phoenix.iterate.BaseGroupedAggregatingResultIterator.next(BaseGroupedAggregatingResultIterator.java:64)
       at 
org.apache.phoenix.jdbc.PhoenixResultSet.next(PhoenixResultSet.java:771)
       at Test.main(Test.java:26)
Caused by: java.util.concurrent.ExecutionException: 
org.apache.phoenix.exception.PhoenixIOException: Failed after retry of 
OutOfOrderScannerNextException: was there a rpc timeout?
       at java.util.concurrent.FutureTask.report(Unknown Source)
       at java.util.concurrent.FutureTask.get(Unknown Source)
       at 
org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:554)
       ... 6 more
Caused by: org.apache.phoenix.exception.PhoenixIOException: Failed after retry 
of OutOfOrderScannerNextException: was there a rpc timeout?
       at 
org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:108)
       at 
org.apache.phoenix.iterate.ScanningResultIterator.next(ScanningResultIterator.java:61)
       at 
org.apache.phoenix.iterate.TableResultIterator.next(TableResultIterator.java:107)
       at 
org.apache.phoenix.iterate.SpoolingResultIterator.<init>(SpoolingResultIterator.java:125)
       at 
org.apache.phoenix.iterate.SpoolingResultIterator.<init>(SpoolingResultIterator.java:83)
       at 
org.apache.phoenix.iterate.SpoolingResultIterator.<init>(SpoolingResultIterator.java:62)
       at 
org.apache.phoenix.iterate.SpoolingResultIterator$SpoolingResultIteratorFactory.newIterator(SpoolingResultIterator.java:78)
       at 
org.apache.phoenix.iterate.ParallelIterators$1.call(ParallelIterators.java:109)
       at 
org.apache.phoenix.iterate.ParallelIterators$1.call(ParallelIterators.java:100)
       at java.util.concurrent.FutureTask.run(Unknown Source)
       at 
org.apache.phoenix.job.JobManager$InstrumentedJobFutureTask.run(JobManager.java:183)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException: 
org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException:
Expected nextCallSeq: 1 But the nextCallSeq got from client: 0; 
request=scanner_id: 2326 number_of_rows: 100 close_scanner: false 
next_call_seq: 0 client_handles_partials: true client_handles_heartbeats: true
       at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2177)
       at 
org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32205)
       at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2034)
       at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
       at 
org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
       at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
       at java.lang.Thread.run(Thread.java:744) at 
org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)
       at 
org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:95)
       at 
org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtil.java:328)
       at 
org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:255)
       at 
org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:62)
       at 
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
       at 
org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:371)
       at 
org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:345)
       at 
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126)
       at 
org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:64)

hbase-site.xml settings:
<property>
                      <name>hbase.rpc.timeout</name>
                      <value>60000</value>
       </property>
    <property>
                     <name>hbase.client.scanner.caching</name>
              <value>100</value>
       </property>
       <property>
                     <name>phoenix.query.timeoutMs</name>
              <value>60000</value>
       </property>
       <property>
         <name>"hbase.client.scanner.timeout.period</name>
           <value>60000</value>
       </property>



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

Reply via email to