[
https://issues.apache.org/jira/browse/PHOENIX-113?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13922153#comment-13922153
]
Hudson commented on PHOENIX-113:
--------------------------------
FAILURE: Integrated in Apache Phoenix - Branch:master #113 (See
[https://builds.apache.org/job/Phoenix/113/])
PHOENIX-113 Enable usage of ClientKeyValue on for indexing on server
(JamesTaylor) (jamestaylor: rev 4ca3cae057f5d50ced0c93dde87caf8c3775c3f2)
* phoenix-core/src/main/java/org/apache/phoenix/schema/tuple/ResultTuple.java
* phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java
*
phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
* phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexCodec.java
*
phoenix-core/src/main/java/org/apache/phoenix/index/IndexMetaDataCacheFactory.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
* phoenix-core/src/main/java/org/apache/phoenix/util/MetaDataUtil.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java
* phoenix-core/src/test/java/org/apache/phoenix/client/TestClientKeyValue.java
* phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java
*
phoenix-core/src/main/java/org/apache/phoenix/client/GenericKeyValueBuilder.java
* phoenix-core/src/main/java/org/apache/phoenix/client/ClientKeyValue.java
*
phoenix-core/src/main/java/org/apache/phoenix/hbase/index/util/VersionUtil.java
* phoenix-core/src/test/java/org/apache/phoenix/index/IndexMaintainerTest.java
*
phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/ParallelWriterIndexCommitter.java
*
phoenix-core/src/main/java/org/apache/phoenix/client/ClientKeyValueBuilder.java
* phoenix-core/src/test/java/org/apache/phoenix/util/MetaDataUtilTest.java
*
phoenix-core/src/test/java/org/apache/phoenix/client/TestClientKeyValueLocal.java
*
phoenix-core/src/main/java/org/apache/phoenix/hbase/index/util/ClientKeyValueBuilder.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
*
phoenix-core/src/main/java/org/apache/phoenix/hbase/index/util/KeyValueBuilder.java
*
phoenix-core/src/main/java/org/apache/phoenix/hbase/index/util/GenericKeyValueBuilder.java
* phoenix-core/src/main/java/org/apache/phoenix/util/KeyValueUtil.java
*
phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServices.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
*
phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
*
phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java
*
phoenix-core/src/main/java/org/apache/phoenix/hbase/index/util/ClientKeyValue.java
* phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
* phoenix-core/src/test/java/org/apache/phoenix/end2end/index/IndexTestUtil.java
*
phoenix-core/src/main/java/org/apache/phoenix/query/DelegateConnectionQueryServices.java
* phoenix-core/src/main/java/org/apache/phoenix/client/KeyValueBuilder.java
*
phoenix-core/src/main/java/org/apache/phoenix/schema/tuple/MultiKeyValueTuple.java
* phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java
> Enable usage of ClientKeyValue on for indexing on server
> --------------------------------------------------------
>
> Key: PHOENIX-113
> URL: https://issues.apache.org/jira/browse/PHOENIX-113
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 3.0.0
> Reporter: James Taylor
> Fix For: 3.0.0
>
> Attachments: phoenix-113-sketch.txt,
> useKeyValueBuilderOnServer-v2.patch, useKeyValueBuilderOnServer.patch
>
>
> Modify code to go through KeyValueBuilder where necessary. Adding abstraction
> for having different KVComparator on each KeyValueBuilder impl.
> Still doesn't work on the server-side due to memstore needing a backing
> buffer for the KeyValue.
> According to [~jesse_yates], the options are:
> 1. Update the ClientKeyValues on the way out via a new hook in the codec,
> e.g. "preWriteToIndexTable(List<Mutation>, byte[] indexTable)",
> Wrap all the clientkvs in something like an ImmutableClientKeyValue that does
> the right thing for getBuffer, getOffset, etc, but without doing all the
> copying. This may be easier to just do as modifications to ClientKeyValue,
> but seems easier to start as a new class first
> 2. Automatically check all the mutations being written in the
> ParallelIndexWriter for being clientKeyvalues
> A bit more painful than the above, since you could short circuit there, but
> easier in terms of code complexity
> 3. Check to see if the write is going to a local region and then transform
> the ClientKeyValues when necessary
> Most difficult as it reaches down into the guts of the coprocessor logic for
> determining region location. Unfortunately, it is already being done by the
> CoprocessorHConnection, but we would need to recreate it for us before it
> hits the HTable.
> You could do it by creating a CoprocessorHConnection and then wrapping that
> in a ClientKeyValueCheckingHConnection and then passing that into the
> constructor for HTable creation.
> This is even more onerous as that constructor is only available on an HTable
> directly, not via the CoprocessorEnvironment, meaning we have to manually
> close tables. We have pretty good exception wrapping, so its not terrible to
> implement, but still a pain to do.
--
This message was sent by Atlassian JIRA
(v6.2#6252)