[ https://issues.apache.org/jira/browse/PHOENIX-7589?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
chaijunjie updated PHOENIX-7589: -------------------------------- Description: When query like this: select * from MY_TABLE where TID between '100' and '110' and BID = '99' and DATADATE like '19%' limit 5 offset 19947; The client will throw IndexOutOfBoundsException... Total data nums is 19950 (between '100' and '110' and BID = '99' and DATADATE like '19%') Only when query data *limit+offset > total* data nums will cause this issue... The RegionServer log is here: {code:java} java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) ~[?:?] at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) ~[?:?] at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) ~[?:?] at java.base/java.util.Objects.checkIndex(Objects.java:385) ~[?:?] at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[?:?] at org.apache.phoenix.schema.tuple.MultiKeyValueTuple.getKey(MultiKeyValueTuple.java:51) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.getOffsetKvWithLastScannedRowKey(NonAggregateRegionScannerFactory.java:460) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.access$000(NonAggregateRegionScannerFactory.java:88) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:407) [phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.BaseRegionScanner.nextRaw(BaseRegionScanner.java:56) [phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) [phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) [phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.nextRaw(BaseScannerRegionObserver.java:254) [phoenix-core-5.2.1.jar:?] at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4179) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4456) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:44095) [hbase-protocol-shaded-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:473) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:131) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:112) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:92) [hbase-server-2.6.1.jar:2.6.1] 2025-04-25 18:14:32,860 | DEBUG | RpcServer.default.FPBQ.Fifo.handler=199,queue=19,port=21302 | Unknown exception type | org.apache.hadoop.hbase.ipc.MetricsHBaseServer.exception(MetricsHBaseServer.java:159) org.apache.hadoop.hbase.DoNotRetryIOException: XG_CLUB_LIST,,1745463662833.1bf6df77c120968bad1086771352ddc5.: Index 0 out of bounds for length 0 at org.apache.phoenix.util.ClientUtil.createIOException(ClientUtil.java:173) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.util.ClientUtil.throwIOException(ClientUtil.java:181) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:419) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.BaseRegionScanner.nextRaw(BaseRegionScanner.java:56) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.nextRaw(BaseScannerRegionObserver.java:254) ~[phoenix-core-5.2.1.jar:?] at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4179) ~[hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4456) ~[hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:44095) ~[hbase-protocol-shaded-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:473) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:131) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:112) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:92) [hbase-server-2.6.1.jar:2.6.1] Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) ~[?:?] at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) ~[?:?] at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) ~[?:?] at java.base/java.util.Objects.checkIndex(Objects.java:385) ~[?:?] at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[?:?] at org.apache.phoenix.schema.tuple.MultiKeyValueTuple.getKey(MultiKeyValueTuple.java:51) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.getOffsetKvWithLastScannedRowKey(NonAggregateRegionScannerFactory.java:460) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.access$000(NonAggregateRegionScannerFactory.java:88) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:407) ~[phoenix-core-5.2.1.jar:?] {code} was: When query like this: select * from MY_TABLE where TID between '100' and '110' and BID = '99' and DATADATE like '19%' limit 5 offset 19947; The client will throw IndexOutOfBoundsException... Total data nums is 19950 (between '100' and '110' and BID = '99' and DATADATE like '19%') *Only when query data limit+offset > total data nums will cause this issue... * The RegionServer log is here: {code:java} java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) ~[?:?] at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) ~[?:?] at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) ~[?:?] at java.base/java.util.Objects.checkIndex(Objects.java:385) ~[?:?] at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[?:?] at org.apache.phoenix.schema.tuple.MultiKeyValueTuple.getKey(MultiKeyValueTuple.java:51) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.getOffsetKvWithLastScannedRowKey(NonAggregateRegionScannerFactory.java:460) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.access$000(NonAggregateRegionScannerFactory.java:88) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:407) [phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.BaseRegionScanner.nextRaw(BaseRegionScanner.java:56) [phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) [phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) [phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.nextRaw(BaseScannerRegionObserver.java:254) [phoenix-core-5.2.1.jar:?] at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4179) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4456) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:44095) [hbase-protocol-shaded-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:473) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:131) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:112) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:92) [hbase-server-2.6.1.jar:2.6.1] 2025-04-25 18:14:32,860 | DEBUG | RpcServer.default.FPBQ.Fifo.handler=199,queue=19,port=21302 | Unknown exception type | org.apache.hadoop.hbase.ipc.MetricsHBaseServer.exception(MetricsHBaseServer.java:159) org.apache.hadoop.hbase.DoNotRetryIOException: XG_CLUB_LIST,,1745463662833.1bf6df77c120968bad1086771352ddc5.: Index 0 out of bounds for length 0 at org.apache.phoenix.util.ClientUtil.createIOException(ClientUtil.java:173) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.util.ClientUtil.throwIOException(ClientUtil.java:181) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:419) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.BaseRegionScanner.nextRaw(BaseRegionScanner.java:56) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.nextRaw(BaseScannerRegionObserver.java:254) ~[phoenix-core-5.2.1.jar:?] at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4179) ~[hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4456) ~[hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:44095) ~[hbase-protocol-shaded-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:473) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:131) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:112) [hbase-server-2.6.1.jar:2.6.1] at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:92) [hbase-server-2.6.1.jar:2.6.1] Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) ~[?:?] at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) ~[?:?] at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) ~[?:?] at java.base/java.util.Objects.checkIndex(Objects.java:385) ~[?:?] at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[?:?] at org.apache.phoenix.schema.tuple.MultiKeyValueTuple.getKey(MultiKeyValueTuple.java:51) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.getOffsetKvWithLastScannedRowKey(NonAggregateRegionScannerFactory.java:460) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.access$000(NonAggregateRegionScannerFactory.java:88) ~[phoenix-core-5.2.1.jar:?] at org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:407) ~[phoenix-core-5.2.1.jar:?] {code} > IndexOutOfBoundsException thrown when query data with > ------------------------------------------------------ > > Key: PHOENIX-7589 > URL: https://issues.apache.org/jira/browse/PHOENIX-7589 > Project: Phoenix > Issue Type: Bug > Components: core > Affects Versions: 5.2.1 > Reporter: chaijunjie > Priority: Critical > > When query like this: > select * from MY_TABLE where TID between '100' and '110' and BID = '99' and > DATADATE like '19%' limit 5 offset 19947; > The client will throw IndexOutOfBoundsException... > Total data nums is 19950 (between '100' and '110' and BID = '99' and DATADATE > like '19%') > > Only when query data *limit+offset > total* data nums will cause this issue... > The RegionServer log is here: > {code:java} > java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0 > at > java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) > ~[?:?] > at > java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) > ~[?:?] > at > java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) > ~[?:?] > at java.base/java.util.Objects.checkIndex(Objects.java:385) ~[?:?] > at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[?:?] > at > org.apache.phoenix.schema.tuple.MultiKeyValueTuple.getKey(MultiKeyValueTuple.java:51) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.getOffsetKvWithLastScannedRowKey(NonAggregateRegionScannerFactory.java:460) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.access$000(NonAggregateRegionScannerFactory.java:88) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:407) > [phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.coprocessor.BaseRegionScanner.nextRaw(BaseRegionScanner.java:56) > [phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) > [phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) > [phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.nextRaw(BaseScannerRegionObserver.java:254) > [phoenix-core-5.2.1.jar:?] > at > org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4179) > [hbase-server-2.6.1.jar:2.6.1] > at > org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4456) > [hbase-server-2.6.1.jar:2.6.1] > at > org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:44095) > [hbase-protocol-shaded-2.6.1.jar:2.6.1] > at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:473) > [hbase-server-2.6.1.jar:2.6.1] > at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:131) > [hbase-server-2.6.1.jar:2.6.1] > at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:112) > [hbase-server-2.6.1.jar:2.6.1] > at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:92) > [hbase-server-2.6.1.jar:2.6.1] > 2025-04-25 18:14:32,860 | DEBUG | > RpcServer.default.FPBQ.Fifo.handler=199,queue=19,port=21302 | Unknown > exception type | > org.apache.hadoop.hbase.ipc.MetricsHBaseServer.exception(MetricsHBaseServer.java:159) > org.apache.hadoop.hbase.DoNotRetryIOException: > XG_CLUB_LIST,,1745463662833.1bf6df77c120968bad1086771352ddc5.: Index 0 out of > bounds for length 0 > at > org.apache.phoenix.util.ClientUtil.createIOException(ClientUtil.java:173) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.util.ClientUtil.throwIOException(ClientUtil.java:181) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:419) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.coprocessor.BaseRegionScanner.nextRaw(BaseRegionScanner.java:56) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.coprocessor.DelegateRegionScanner.nextRaw(DelegateRegionScanner.java:79) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.nextRaw(BaseScannerRegionObserver.java:254) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4179) > ~[hbase-server-2.6.1.jar:2.6.1] > at > org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:4456) > ~[hbase-server-2.6.1.jar:2.6.1] > at > org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:44095) > ~[hbase-protocol-shaded-2.6.1.jar:2.6.1] > at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:473) > [hbase-server-2.6.1.jar:2.6.1] > at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:131) > [hbase-server-2.6.1.jar:2.6.1] > at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:112) > [hbase-server-2.6.1.jar:2.6.1] > at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:92) > [hbase-server-2.6.1.jar:2.6.1] > Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for > length 0 > at > java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) > ~[?:?] > at > java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) > ~[?:?] > at > java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) > ~[?:?] > at java.base/java.util.Objects.checkIndex(Objects.java:385) ~[?:?] > at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[?:?] > at > org.apache.phoenix.schema.tuple.MultiKeyValueTuple.getKey(MultiKeyValueTuple.java:51) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.getOffsetKvWithLastScannedRowKey(NonAggregateRegionScannerFactory.java:460) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.access$000(NonAggregateRegionScannerFactory.java:88) > ~[phoenix-core-5.2.1.jar:?] > at > org.apache.phoenix.iterate.NonAggregateRegionScannerFactory$1.next(NonAggregateRegionScannerFactory.java:407) > ~[phoenix-core-5.2.1.jar:?] > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)