Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 63EFA1087F for ; Mon, 9 Sep 2013 18:07:56 +0000 (UTC) Received: (qmail 49482 invoked by uid 500); 9 Sep 2013 18:07:56 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 49447 invoked by uid 500); 9 Sep 2013 18:07:55 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 49423 invoked by uid 99); 9 Sep 2013 18:07:54 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Sep 2013 18:07:54 +0000 Date: Mon, 9 Sep 2013 18:07:54 +0000 (UTC) From: "Jonathan Hsieh (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-9359) Convert KeyValue to Cell in hbase-client module - Result/Put/Delete, ColumnInterpreter MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-9359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13762113#comment-13762113 ] Jonathan Hsieh commented on HBASE-9359: --------------------------------------- Originally came from discussion on HBASE-9334 but is mostly relevant to the HBASE-9359 part of the commit. [~nkeywal]: {quote} I may miss something obvious, but I understand that the goal of this change is to require a recompile but not modification of the client app ("Recompile of client apps likely needed after this change."). But with this change: public KeyValue[] raw() { ===> public Cell[] raw() { A client which was calling 'raw' must now be changed to use 'Cell', no? Incidentally, it seems not possible to write a client that would work with 2 versions of HBase (i.e. modifying the client, but beeing able to compile the modified client with a previous version of HBase). I'm having the issue because I port the ycsb benchmark. It depends on raw. Lastly, audience parameter for 'cell' is private, but as it appears in a public interface I think it should be public... {quote} Good catch on the InterfaceAudience for Cell -- that should be updated. I'll file and commit that. The release notes here highlight the minor changes need to be done to applications -- change KeyValue to Cell, change List to List. [~sershe]: {quote} +1 on fixing to not break compat... this is not the first time recently something was broken like that (getFamilyMap, then HBASE_CLASSPATH), can we use normal deprecation route to avoid breaking things. Jonathan Hsieh what do you think should be done? Would the above patch be easy to fix up? {quote} I think adding parts of the old api back is possible but it will incur some non-trivial performance cost -- generally we'll need to use KeyValueUtil.ensureKeyValue in many places and will also need to make copy conversions of List to List and KeyValue[] to Cell[]. See some of the gymnastics in place for Coprocs and Filters. We've been updating apps/systems dependent on hbase (some flume connectors, hive) and it has been annoying but straight forward. There are several cases already where we have broken compat where we are not going to be able to restore the old api (some were due to writable->protobuf conversion such as HBASE-7215). In this patch I've added some of the most popular convenience methods to Cell as deprecated to minimize pain (#getRow, #getQualifier, #getFamily, #getValue). I think adding some of the other more popular ones is reasonable but adding everythign back is not. (a perf degraded #raw seems like a candidate now, as well as a rename of the interface to #rawCells()). Did ycsb encounter any other conversion pains? Other suggestions? > Convert KeyValue to Cell in hbase-client module - Result/Put/Delete, ColumnInterpreter > -------------------------------------------------------------------------------------- > > Key: HBASE-9359 > URL: https://issues.apache.org/jira/browse/HBASE-9359 > Project: HBase > Issue Type: Sub-task > Components: Client > Affects Versions: 0.95.2 > Reporter: Jonathan Hsieh > Assignee: Jonathan Hsieh > Fix For: 0.98.0, 0.96.0 > > Attachments: hbase-9334-9359.v4.patch, hbase-9359-9334.v5.patch, hbase-9359-9334.v6.patch, hbase-9359.patch, hbase-9359.v2.patch, hbase-9359.v3.patch, hbase-9359.v5.patch, hbase-9359.v6.patch > > > This path is the second half of eliminating KeyValue from the client interfaces. This percolated through quite a bit. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira