Yongxian Yuan created PHOENIX-3514:
--------------------------------------

             Summary: java.lang.IndexOutOfBoundsException
                 Key: PHOENIX-3514
                 URL: https://issues.apache.org/jira/browse/PHOENIX-3514
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.7.0
            Reporter: Yongxian Yuan


When paged queries of second page and serached by local index 
automatically´╝îthe hbase sever sometime throw execption:

2016-11-30 14:59:58,205 DEBUG [B.DefaultRpcServer.handler=0,queue=0,port=60020] 
ipc.RpcServer: B.DefaultRpcServer.handler=0,queue=0,port=60020: callId: 34776 
service: ClientService methodName: Scan size: 25 connection: 172.25.21.13:31201
org.apache.hadoop.hbase.DoNotRetryIOException: 
_LOCAL_IDX_GSMS_MSG_PACK_SMS,\xFF\xFF\xFE\xA7\xDA;C\xFF\x00\x00,1480416200074.f40d810e2caa8be6d1c3d01f8cd58c4f.:
 
        at 
org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:87)
        at 
org.apache.phoenix.util.ServerUtil.throwIOException(ServerUtil.java:53)
        at 
org.apache.phoenix.coprocessor.BaseScannerRegionObserver$2.nextRaw(BaseScannerRegionObserver.java:352)
        at 
org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:76)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.scan(HRegionServer.java:3336)
        at 
org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32492)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2197)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:104)
        at 
org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: 
        at 
org.apache.phoenix.index.IndexMaintainer.buildDataRowKey(IndexMaintainer.java:653)
        at 
org.apache.phoenix.util.IndexUtil.wrapResultUsingOffset(IndexUtil.java:506)
        at 
org.apache.phoenix.coprocessor.BaseScannerRegionObserver$2.nextRaw(BaseScannerRegionObserver.java:339)
        ... 8 more
Caused by: java.lang.IndexOutOfBoundsException
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:151)
        at java.io.DataOutputStream.write(DataOutputStream.java:107)
        at 
org.apache.phoenix.index.IndexMaintainer.buildDataRowKey(IndexMaintainer.java:653)
        ... 10 more

When I modified the 4.7 source code to get more log(the source code and the log 
in the Attachments),I found the "indexRowKeyPtr" has bean changed.

Throws this execption is because ScanRegionObserver.class is a Singleton and 
the property of ptr(ImmutableBytesWritable.class) is not synchronised.

So changing the property of ptr to a temporary variable will solve the problem



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

Reply via email to