forcedotcom / phoenix

BSD 3-Clause "New" or "Revised" License
559 stars 227 forks source link

Operations on table throw exception: ArrayIndexOutOfBoundsException & DoNotRetryIOException #744

Open YO-JLIFE opened 8 years ago

YO-JLIFE commented 8 years ago

First, I create a table just for testing,like this:

CREATE TABLE ZHM_TEST(
    TESTID VARCHAR NOT NULL,
    CREATETIME VARCHAR NOT NULL,
    PLATFORM VARCHAR NOT NULL,
    MCOUNT1 UNSIGNED_LONG,
    MCOUNT2 UNSIGNED_LONG,
    MCOUNT1 UNSIGNED_LONG,
    CONSTRAINT PK PRIMARY KEY (TESTID, CREATETIME, PLATFORM)
);

This sql is error because of the duplicate key MCOUNT1, however, although exception is throw, the table is created, like using the following sql:

CREATE TABLE ZHM_TEST(
    TESTID VARCHAR NOT NULL,
    CREATETIME VARCHAR NOT NULL,
    PLATFORM VARCHAR NOT NULL,
    MCOUNT1 UNSIGNED_LONG,
    MCOUNT2 UNSIGNED_LONG,
    CONSTRAINT PK PRIMARY KEY (TESTID, CREATETIME, PLATFORM)
);

and then, all operation on this table throw the same exception, such asDROP, SELECT and so on:

Error: org.apache.hadoop.hbase.DoNotRetryIOException: ZHM_TEST: null
    at org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:84)
    at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.dropTable(MetaDataEndpointImpl.java:1316)
    at org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService.callMethod(MetaDataProtos.java:10525)
    at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7435)
    at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1875)
    at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1857)
    at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32209)
    at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2114)
    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:101)
    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:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException

SQLState:  08000
ErrorCode: 101

How can I solve it?