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 B6605200C53 for ; Tue, 11 Apr 2017 21:34:24 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id B4E24160B9B; Tue, 11 Apr 2017 19:34:24 +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 AE87B160B7D for ; Tue, 11 Apr 2017 21:34:23 +0200 (CEST) Received: (qmail 12087 invoked by uid 500); 11 Apr 2017 19:34:22 -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 12071 invoked by uid 99); 11 Apr 2017 19:34:22 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Apr 2017 19:34:22 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 0AADE181069 for ; Tue, 11 Apr 2017 19:34:22 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.397 X-Spam-Level: X-Spam-Status: No, score=-0.397 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-2.796, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id Syrt1SP5RgTR for ; Tue, 11 Apr 2017 19:34:19 +0000 (UTC) Received: from mail-io0-f169.google.com (mail-io0-f169.google.com [209.85.223.169]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 2047660D9A for ; Tue, 11 Apr 2017 19:34:18 +0000 (UTC) Received: by mail-io0-f169.google.com with SMTP id l7so14744552ioe.3 for ; Tue, 11 Apr 2017 12:34:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ISTwg7uXqa/URIKwNz+6rBCKE5+FUvsh6pt5dB2s4pA=; b=uyuSJ5z2eTF+ek5udn1B0w1/Kh0jre4cHDrEpKR77A0zsG/2/IN4kd4tmy6Y2z/7bP a62e8ut/+Ukh/W+jz7KAD3b48GuU4q9GYSevhd6bZGJI64gIgqAcnpEcfnojaEEmGL/b EyjjUxSprnm+4zO+ZCONmsUzn6699Hu0pcQEYCfMpvC7of07P6c1vVMIdOCoeTZLYyfk k8Ne661gReE3kwcXyG4RiIRiCeg/qn6l7VP5fCpkK9YtQvYxab/0Q7FUh6TqDjbAneFL QaA8X6mB5fuLsmMBwbQSTEIamyH2T3ISsO+sYtAAKtkpFP+4yFW9B4cNHa25DhjmS+qo HCtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ISTwg7uXqa/URIKwNz+6rBCKE5+FUvsh6pt5dB2s4pA=; b=Km2aFQyC8NwEnmpdE04wvfk5yNOXvPIS9Txq2aXo7vmMI3QMuD23g4bb+vXW349hPT s9FtzrbNuTxDEM1hp7KNFZX+xkhC+vTcnb5CRxQAK4pBJey6G46cmjdueXV4foykwxVv uyl1J4u3mmO9KaJIleNZ+TgzddfcqAxlT+J6bEW3hiFpyrXDX/8XXZrXkl/UWhqQnw4N NI37r0ebgEl7hVyLbDt8fXVYFmWcjA5PbrRQtHkbXMbggDL6TrJd9JmVcYHnjriLldkR Pxqk9n2usIopF8t8tWj8wArqaX2EzdURtcGyiVbqnBXMpcM0vD4a02ct1KN9Kdr4dWVY HcUg== X-Gm-Message-State: AN3rC/5DtpI7ghvPzQqeOk/UIT0JgzRcMXTEAkHf4k1PH4gQLaryatkLNUPl05pP4bku2psDHS0ukgdqcuGIhA== X-Received: by 10.107.3.106 with SMTP id 103mr11977176iod.231.1491939256591; Tue, 11 Apr 2017 12:34:16 -0700 (PDT) MIME-Version: 1.0 References: <35A15B2D-07EF-445A-9CA8-11BF47C72871@gmail.com> <7AE04EB4-7599-4181-B71D-B261773BF636@amazon.com> In-Reply-To: From: Jesse Yates Date: Tue, 11 Apr 2017 19:34:05 +0000 Message-ID: Subject: Re: [DISCUSS] More Shading To: dev@hbase.apache.org Content-Type: multipart/alternative; boundary=001a113f8e306a7aef054ce92d4f archived-at: Tue, 11 Apr 2017 19:34:24 -0000 --001a113f8e306a7aef054ce92d4f Content-Type: text/plain; charset=UTF-8 Right, hence the install/package phase (probably with -DskipTests) first. Probably only have to do this occasionally, as dependencies change. Agree the IDEs are really unhappy with this though. Seems like more headache to create another repo, but I'm not too tied either way. Just asking. Thanks Sean. -J On Tue, Apr 11, 2017 at 12:24 PM Sean Busbey wrote: > A new module probably won't work due to the fact that we need to reference > the relocated classes in source code and maven won't do that until the > "package" phase. > > IDEs in particular will barf all over the place. > > On Tue, Apr 11, 2017 at 1:04 PM Jesse Yates > wrote: > > > > would ask for a new repo [1]. In here we'd create a new mvn project. > > > > Why get a new repo? A different (new) HBase mvn module that is depended > > upon via other modules should cover it, IIRC. That module can handle all > > the shading and not include transitive dependencies. Then in "downstream > > modules" you should be able to just use the shaded classes. Building > would > > require doing a 'mvn install', but that's nothing new. > > > > If this was going to support the client I'd be concerned with size of the > > resulting jar, with all the potential dependencies, but meh - its the > > server only! > > > > Just my $0.02, > > Jesse > > > > On Tue, Apr 11, 2017 at 10:23 AM York, Zach wrote: > > > > > Should we allow dependent projects (such as Phoenix) to weigh in on > this > > > issue since they are likely going to be the ones that benefit/are > > effected? > > > > > > On 4/11/17, 10:17 AM, "York, Zach" wrote: > > > > > > +1 (non-binding) > > > > > > This sounds like a good idea to me! > > > > > > Zach > > > > > > On 4/11/17, 9:48 AM, "saint.ack@gmail.com on behalf of Stack" < > > > saint.ack@gmail.com on behalf of stack@duboce.net> wrote: > > > > > > Let me revive this thread. > > > > > > Recall, we are stuck on old or particular versions of critical > > > libs. We are > > > unable to update because our versions will clash w/ versions > from > > > upstreamer hadoop2.7/2.8/3.0/spark, etc. We have a shaded > client. > > > We need > > > to message downstreamers that they should use it going forward. > > > This will > > > help going forward but it will not inoculate our internals nor > an > > > existing > > > context where we'd like to be a compatible drop-in. > > > > > > We could try hackery filtering transitive includes up in poms > for > > > each > > > version of hadoop/spark that we support but in the end, its a > > > bunch of > > > effort, hard to test, and we are unable to dictate the > CLASSPATH > > > order in > > > all situations. > > > > > > We could try some shading voodoo inline w/ build. Because > shading > > > is a > > > post-package step and because we are modularized and shading > > > includes the > > > shaded classes in the artifact produced, we'd end up w/ > multiple > > > copies of > > > guava/netty/etc. classes, an instance per module that makes a > > > reference. > > > > > > Lets do Sean's idea of a pre-build step where we package and > > > relocate > > > ('shade') critical dependencies (Going by the thread above, > Ram, > > > Anoop, and > > > Andy seems good w/ general idea). > > > > > > In implementation, we (The HBase PMC) would ask for a new repo > > > [1]. In here > > > we'd create a new mvn project. This project would produce a > > single > > > artifact > > > (jar) called hbase-dependencies or hbase-3rdparty or > > > hbase-shaded-3rdparty > > > libs. In it would be relocated core libs such as guava and > netty > > > (and maybe > > > protobuf). We'd publish this artifact and then have hbase > depend > > > on it > > > changing all references to point at the relocation: e.g. rather > > > than import > > > com.google.common.collect.Maps, we'd import > > > org.apache.hadoop.hbase.com.google.common.collect.Maps. > > > > > > We (The HBase PMC) will have to make releases of this new > > artifact > > > and vote > > > on them. I think it will be a relatively rare event. > > > > > > I'd be up for doing the first cut if folks are game. > > > > > > St.Ack > > > > > > > > > 1. URL via Sean but for committers to view only: > > > https://reporeq.apache.org/ > > > > > > On Sun, Oct 2, 2016 at 10:29 PM, ramkrishna vasudevan < > > > ramkrishna.s.vasudevan@gmail.com> wrote: > > > > > > > +1 for Sean's ideas. Bundling all the dependent libraries and > > > shading them > > > > into one jar and HBase referring to it makes sense and should > > > avoid some of > > > > the pain in terms of IDE usage. Stack's doc clearly talks > about > > > the IDE > > > > issues that we may get after this protobuf shading goes in. > It > > > may be > > > > difficult for new comers and those who don't know this > > > background of why it > > > > has to be like that. > > > > > > > > Regards > > > > Ram > > > > > > > > On Sun, Oct 2, 2016 at 10:51 AM, Stack > > wrote: > > > > > > > > > On Sat, Oct 1, 2016 at 6:32 PM, Jerry He < > jerryjch@gmail.com > > > > > > wrote: > > > > > > > > > > > How is the proposed going to impact the existing > > > shaded-client and > > > > > > shaded-server modules, making them unnecessary and go > away? > > > > > > > > > > > > > > > > No. We still need the blanket shading of hbase client and > > > server. > > > > > > > > > > This effort is about our internals. We have a mess of other > > > components > > > > all > > > > > up inside us such as HDFS, etc., each with their own sets > of > > > dependencies > > > > > many of which we have in common. This project t is about > > > making it so we > > > > > can upgrade at a rate independent of when our upstreamers > > > choose to > > > > change. > > > > > > > > > > > > > > > > It doesn't seem so. These modules are supposed to shade > > > HBase and > > > > > upstream > > > > > > from downstream users. > > > > > > > > > > > > > > > > Agree. > > > > > > > > > > Thanks for drawing out the difference between these two > > > shading efforts, > > > > > > > > > > St.Ack > > > > > > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > Jerry > > > > > > > > > > > > On Sat, Oct 1, 2016 at 2:33 PM, Andrew Purtell < > > > > andrew.purtell@gmail.com > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > Sean has suggested a pre-build step where in another > > > repo we'd make > > > > > > hbase > > > > > > > > shaded versions of critical libs, 'release' them > > (votes, > > > etc.) and > > > > > then > > > > > > > > have core depend on these. It be a bunch of work but > > > would make the > > > > > > dev's > > > > > > > > life easier. > > > > > > > > > > > > > > So when we make changes that require updates to and > > > rebuild of the > > > > > > > supporting libraries, as a developer I would make local > > > changes, > > > > > install > > > > > > a > > > > > > > snapshot of that into the local maven cache, then point > > > the HBase > > > > build > > > > > > at > > > > > > > the snapshot, then do the other half of the work, then > > > push up to > > > > both? > > > > > > > > > > > > > > I think this could work. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > Jesse Yates > > Founder/CEO Fineo.io > > Book a meeting: https://calendly.com/jyates > > > -- Jesse Yates Founder/CEO Fineo.io Book a meeting: https://calendly.com/jyates --001a113f8e306a7aef054ce92d4f--