Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 19F64200D11 for ; Mon, 2 Oct 2017 18:08:45 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 184251609EF; Mon, 2 Oct 2017 16:08:45 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 343411609DE for ; Mon, 2 Oct 2017 18:08:44 +0200 (CEST) Received: (qmail 68586 invoked by uid 500); 2 Oct 2017 16:08:43 -0000 Mailing-List: contact dev-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list dev@hbase.apache.org Received: (qmail 68575 invoked by uid 99); 2 Oct 2017 16:08:43 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Oct 2017 16:08:43 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 4E6321A5D53 for ; Mon, 2 Oct 2017 16:08:42 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.001 X-Spam-Level: X-Spam-Status: No, score=-0.001 tagged_above=-999 required=6.31 tests=[FROM_MISSPACED=0.001, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id IqNJrXrY2vES for ; Mon, 2 Oct 2017 16:08:39 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id 4EDD85FB40 for ; Mon, 2 Oct 2017 16:08:38 +0000 (UTC) Received: from localhost (cust-asf2.ponee.io [163.172.22.184]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 2FF80E0D22 for ; Mon, 2 Oct 2017 16:08:37 +0000 (UTC) MIME-Version: 1.0 Message-ID: Subject: Re: [DISCUSS] Move Type out of KeyValue References: From: "Chia-Ping Tsai" In-Reply-To: Content-Type: text/plain; charset="iso-8859-1" x-ponymail-sender: 51ef25fd0a3611d18ffb478ae2ae610bbbd2432c Date: Mon, 02 Oct 2017 16:08:36 -0000 x-ponymail-agent: PonyMail Composer/0.2 To: X-Mailer: LuaSocket 3.0-rc1 archived-at: Mon, 02 Oct 2017 16:08:45 -0000 I don't want to impact the Cell...Maybe the new class "CellType" should be added into CellBuilderType. The Cell#getTypeByte() won't be changed. On 2017-10-02 21:50, Ted Yu wrote: > If CellType is added, should the following method of Cell be affected ? > > /** > > * @return The byte representation of the KeyValue.TYPE of this cell: one > of Put, Delete, etc > > */ > > byte getTypeByte(); > > Ideally CellType should be returned instead of a byte. > > On Mon, Oct 2, 2017 at 1:54 AM, Chia-Ping Tsai wrote: > > > How about introducing an new enum "CellType" which is subset of > > KeyValue#Type? It will be exposed as IA.Public to end user for helping > > build the custom cell (via CellBuilder). The types which "CellType" should > > have are shown below. > > 1) Put > > 2) Delete > > 3) DeleteFamilyVersion > > 4) DeleteColumn > > 5) DeleteFamily > > Hence, the CellBuilder#setType(byte) will be replaced by > > CellBuilder#setType(CellType). Our internal use still reference to > > KeyValue#Type. > > > > > > On 2017-09-29 18:39, Anoop John wrote: > > > Ya as Chia-Ping said, the problem he is trying to solve is very basic > > > one. As long as we allow custom Cell creation (Via CellBuilder API) > > > and allow Mutations to be added with Cells and pass that from client > > > side APIs, we have to make the Type public accessible. > > > Or else the Cell building APIs should not be taking in a type byte. > > > We have to some way allow user to make put/delete cells stc. > > > > > > Is type that bound for only KV? We have getType in Cell also right? > > > The type in full form what we have in KV now, may be making us confuse > > > here? As Ram said it contains some internal types also which the user > > > has never to know abt. Pls correct if saying in wrong way. > > > > > > Good that Chia-Ping brought this out here. We have to either way > > > solve it and make the public API fully public. > > > > > > -Anoop- > > > > > > On Fri, Sep 29, 2017 at 2:27 PM, ramkrishna vasudevan > > > wrote: > > > > Even if we are trying to move out I think only few of the types are > > really > > > > user readable. So we should be very careful here. So since we have > > > > CellBuilder way it is better we check what type of cells a user can > > build. > > > > I think for now the Cellbuilder is not client exposed? > > > > But again moving to Cell means it becomes public which is not right > > IMO and > > > > I thinks others here also agree to it. > > > > > > > > Regards > > > > Ram > > > > > > > > On Fri, Sep 29, 2017 at 10:50 AM, Chia-Ping Tsai > > > > wrote: > > > > > > > >> Thanks for all comment. > > > >> > > > >> The problem i want to resolve is the valid code should be exposed as > > > >> IA.Public. Otherwise, end user have to access the IA.Private class to > > build > > > >> the custom cell. > > > >> > > > >> For example, I have a use case which plays a streaming role in our > > > >> appliaction. It > > > >> applies the CellBuilder(HBASE-18519) to build custom cells. These > > cells > > > >> have many same fields so they are put in shared-memory for avoiding GC > > > >> pause. Everything is wonderful. However, we have to access the > > IA.Private > > > >> class - KeyValue#Type - to get the valid code of Put. > > > >> > > > >> I believe there are many use cases of custom cell, and consequently > > it is > > > >> worth adding a way to get the valid type via IA.Public class. > > Otherwise, it > > > >> may imply that the custom cell is based on a unstable way, because the > > > >> related code can be changed at any time. > > > >> -- > > > >> Chia-Ping > > > >> > > > >> On 2017-09-29 00:49, Andrew Purtell wrote: > > > >> > I agree with Stack. Was typing up a reply to Anoop but let me move > > it > > > >> down > > > >> > here. > > > >> > > > > >> > The type code exposes some low level details of how our current > > stores > > > >> are > > > >> > architected. But what if in the future you could swap out HStore > > > >> implements > > > >> > Store with PStore implements Store, where HStore is backed by > > HFiles and > > > >> > PStore is backed by Parquet? Just as a hypothetical example. I know > > there > > > >> > would be larger issues if this were actually attempted. Bear with > > me. You > > > >> > can imagine some different new Store implementation that has some > > > >> > advantages but is not a design derived from the log structured > > merge tree > > > >> > if you like. Most values from a new Cell.Type based on KeyValue.Type > > > >> > wouldn't apply to cells from such a thing because they are > > particular to > > > >> > how LSMs work. I'm sure such a project if attempted would make a > > number > > > >> of > > > >> > changes requiring a major version increment and low level details > > could > > > >> be > > > >> > unwound from Cell then, but if we could avoid doing it in the first > > > >> place, > > > >> > I think it would better for maintainability. > > > >> > > > > >> > > > > >> > On Thu, Sep 28, 2017 at 9:39 AM, Stack wrote: > > > >> > > > > >> > > On Thu, Sep 28, 2017 at 2:25 AM, Chia-Ping Tsai < > > chia7712@apache.org> > > > >> > > wrote: > > > >> > > > > > >> > > > hi folks, > > > >> > > > > > > >> > > > User is allowed to create custom cell but the valid code of > > type - > > > >> > > > KeyValue#Type - is declared as IA.Private. As i see it, we > > should > > > >> expose > > > >> > > > KeyValue#Type as Public Client. Three possible ways are shown > > below: > > > >> > > > 1) Change declaration of KeyValue#Type from IA.Private to > > IA.Public > > > >> > > > 2) Move KeyValue#Type into Cell. > > > >> > > > 3) Move KeyValue#Type to upper level > > > >> > > > > > > >> > > > Any suggestions? > > > >> > > > > > > >> > > > > > > >> > > What is the problem that we are trying to solve Chia-Ping? You > > want to > > > >> make > > > >> > > Cells of a new Type? > > > >> > > > > > >> > > My first reaction is that KV#Type is particular to the KV > > > >> implementation. > > > >> > > Any new Cell implementation should not have to adopt the KeyValue > > > >> typing > > > >> > > mechanism. > > > >> > > > > > >> > > S > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > -- > > > >> > > > Chia-Ping > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > > >> > -- > > > >> > Best regards, > > > >> > Andrew > > > >> > > > > >> > Words like orphans lost among the crosstalk, meaning torn from > > truth's > > > >> > decrepit hands > > > >> > - A23, Crosstalk > > > >> > > > > >> > > > > > >