forcedotcom / phoenix

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

Upsert on indexed table is failing for 0.94.15 or above #717

Open chrajeshbabu opened 10 years ago

chrajeshbabu commented 10 years ago

In the latest code, upsert on indexed table is failing because of ClientKeyValueBuilder used for 0.94.14 or above. I think we can make use it for the releases contain https://issues.apache.org/jira/browse/HBASE-7320 fix.

private static final int CUSTOM_KEY_VALUE_MIN_VERSION = MetaDataUtil.encodeVersion("0.94.14");

public static KeyValueBuilder get(String hbaseVersion) {
    int version = MetaDataUtil.encodeVersion(hbaseVersion);
    if (version >= CUSTOM_KEY_VALUE_MIN_VERSION) {
        return ClientKeyValueBuilder.INSTANCE;
    }
    return GenericKeyValueBuilder.INSTANCE;
}

java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.UnsupportedOperationException: ClientKeyValue does not support a single backing buffer. at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) at java.util.concurrent.FutureTask.get(FutureTask.java:83) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1708) at org.apache.hadoop.hbase.client.CoprocessorHConnection.processBatchCallback(CoprocessorHConnection.java:39) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1560) at org.apache.hadoop.hbase.client.CoprocessorHConnection.processBatch(CoprocessorHConnection.java:39) at org.apache.hadoop.hbase.client.HTable.batch(HTable.java:779) at org.apache.hadoop.hbase.coprocessor.CoprocessorHost$Environment$HTableWrapper.batch(CoprocessorHost.java:522) at com.salesforce.hbase.index.write.ParallelWriterIndexCommitter$1.call(ParallelWriterIndexCommitter.java:154) at com.salesforce.hbase.index.write.ParallelWriterIndexCommitter$1.call(ParallelWriterIndexCommitter.java:136) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.RuntimeException: java.lang.UnsupportedOperationException: ClientKeyValue does not support a single backing buffer. at org.apache.hadoop.hbase.client.ServerCallable.withoutRetries(ServerCallable.java:235) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$3.call(HConnectionManager.java:1544) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$3.call(HConnectionManager.java:1532) ... 5 more Caused by: java.lang.UnsupportedOperationException: ClientKeyValue does not support a single backing buffer. at com.salesforce.phoenix.client.ClientKeyValue.getBuffer(ClientKeyValue.java:500) at org.apache.hadoop.hbase.regionserver.MemStore.maybeCloneWithAllocator(MemStore.java:259) at org.apache.hadoop.hbase.regionserver.MemStore.add(MemStore.java:207) at org.apache.hadoop.hbase.regionserver.Store.add(Store.java:510) at org.apache.hadoop.hbase.regionserver.HRegion.applyFamilyMapToMemstore(HRegion.java:2969) at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutation(HRegion.java:2413) at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2177) at org.apache.hadoop.hbase.regionserver.HRegionServer.multi(HRegionServer.java:3871) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$3$1.call(HConnectionManager.java:1537) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$3$1.call(HConnectionManager.java:1535) at org.apache.hadoop.hbase.client.ServerCallable.withoutRetries(ServerCallable.java:229) ... 7 more

Even IndexMaintainerTest is failing with this. Am I missing any thing?