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 A8B5C200C23 for ; Wed, 8 Feb 2017 05:05:29 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id A749B160B68; Wed, 8 Feb 2017 04:05:29 +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 CB3FE160B3E for ; Wed, 8 Feb 2017 05:05:28 +0100 (CET) Received: (qmail 8484 invoked by uid 500); 8 Feb 2017 04:05:27 -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 8472 invoked by uid 99); 8 Feb 2017 04:05:27 -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; Wed, 08 Feb 2017 04:05:27 +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 B476D189FB6 for ; Wed, 8 Feb 2017 04:05:26 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.648 X-Spam-Level: ** X-Spam-Status: No, score=2.648 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, 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 ak8jSIbQMacS for ; Wed, 8 Feb 2017 04:05:24 +0000 (UTC) Received: from mail-vk0-f48.google.com (mail-vk0-f48.google.com [209.85.213.48]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id A71845F254 for ; Wed, 8 Feb 2017 04:05:23 +0000 (UTC) Received: by mail-vk0-f48.google.com with SMTP id t8so92794823vke.3 for ; Tue, 07 Feb 2017 20:05:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=sh5edvX0/Bxwug+L54PcmMaUKO2cUsMqqMCL0oclUs0=; b=FmS2F6DNyYYt4Sl3zlH2IDGS8uBlesrCjQ6P2WCqzy4OHli0h+wKndbz4Yyku0fK/4 dxqeoixv3FpGcMhbYbagAmaJd8apQx8QnIfSmhtLn/ddDEuE+GzvKwFXerUn2vUy7AAD oIrUjUwZWkvNKc/D3Zvpp5SGZVQcZXMGaLbWLlzpMqkucd1GH+qKZ7TnvLcJCkvcF7yK I1014uohlDnaESpHnAY4SgFUqCiXo6YSxKPyLL3QFr2DetSw2BXcwTYkkPw92Jda1nmr FvCdmcVyzvhE9iuK//jQuKJQ4poAnMT273jaZM+9R6oiphsr8zSbaMHA2897YKaJxORH qxjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=sh5edvX0/Bxwug+L54PcmMaUKO2cUsMqqMCL0oclUs0=; b=BjOwv4k5SvIHXqRQgHXc2mqyc0LunO2wDaEYP2ti9Ndm8nt7HLFO3vxfsUsKU1nEHo HYZGcL2Pd8+6ZbzGj82deODcg/kVEudehQyV6dHi9RpTbwQq7GyhTpR0HSEHAXt1CsxE dROln58X2aRFmJ10e9FC+7ek1SdQXTbMLlKdwidPup+UvSLTpb+JtlfOF9s23gHEM+zH g3dYavJuIK543VReyh6o/ppjut3kBW3tG1yueorJLjr9+tIQSqwVb1AMBhBuWblL3zgG l9NA0eLfxH64tVPOog1w66kgfXkunyaKPnYd/+n7pL7HnlKUwSXuDJXmj4/KWgxiUUFW H2Hw== X-Gm-Message-State: AMke39nw6B/uYV0svWbheVev5SViIzjjbXRwQd6v5YJc7foiGVul6LW+Zy1zMQvDwP/Vy3BMFUB62ainTttOTQ== X-Received: by 10.31.15.15 with SMTP id 15mr7383788vkp.60.1486526716778; Tue, 07 Feb 2017 20:05:16 -0800 (PST) MIME-Version: 1.0 Received: by 10.159.37.169 with HTTP; Tue, 7 Feb 2017 20:05:16 -0800 (PST) In-Reply-To: References: From: =?UTF-8?B?5byg6ZOOKER1byBaaGFuZyk=?= Date: Wed, 8 Feb 2017 12:05:16 +0800 Message-ID: Subject: Re: [DISCUSSION] Upgrading core dependencies To: dev@hbase.apache.org Content-Type: multipart/alternative; boundary=001a1143a88ce73cd80547fcf8b5 archived-at: Wed, 08 Feb 2017 04:05:29 -0000 --001a1143a88ce73cd80547fcf8b5 Content-Type: text/plain; charset=UTF-8 For coprocessors, our compatibility matrix says that we can break everything, so I think dependency is not the first thing they need to consider when upgrading between major versions? 2017-02-08 11:48 GMT+08:00 Ted Yu : > bq. Better to start using the new API's available in Java 8 > > +1 to the above. > If no new Guava construct is introduced and we replace current Guava usage > with Java 8 counterpart(s), in the future we can get rid of Guava > dependency. > > On Tue, Feb 7, 2017 at 6:50 PM, Nick Dimiduk wrote: > > > For the client: I'm a fan of shaded client modules by default and > > minimizing the exposure of that surface area of 3rd party libs (none, if > > possible). For example, Elastic Search has a similar set of challenges, > the > > solve it by advocating users shade from step 1. It's addressed first > thing > > in the docs for their client libs. We could take it a step further by > > making the shaded client the default client (o.a.hbase:hbase-client) > > artifact and internally consume an hbase-client-unshaded. Turns the whole > > thing on it's head in a way that's better for the naive user. > > > > For MR/Spark/etc connectors: We're probably stuck as it is until > necessary > > classes can be extracted from hbase-server. I haven't looked into this > > lately, so I hesitate to give a prescription. > > > > For coprocessors: They forfeit their right to 3rd party library > dependency > > stability by entering our process space. Maybe in 3.0 or 4.0 we can > rebuild > > on jigsaw or OSGi, but for today I think the best we should do is provide > > relatively stable internal APIs. I also find it unlikely that we'd want > to > > spend loads of cycles optimizing for this usecase. There's other, bigger > > fish, IMHO. > > > > For size/compile time: I think these ultimately matter less than user > > experience. Let's find a solution that sucks less for downstreamers and > > work backward on reducing bloat. > > > > On the point of leaning heavily on Guava: their pace is traditionally too > > fast for us to expose in any public API. Maybe that's changing, in which > > case we could reconsider for 3.0. Better to start using the new API's > > available in Java 8... > > > > Thanks for taking this up, Stack. > > -n > > > > On Tue, Feb 7, 2017 at 12:22 PM Stack wrote: > > > > > Here's an old thorny issue that won't go away. I'd like to hear what > > folks > > > are thinking these times. > > > > > > My immediate need is that I want to upgrade Guava [1]. I want to move > us > > to > > > guava 21.0, the latest release [2]. We currently depend on guava 12.0. > > > Hadoop's guava -- 11.0 -- is also on our CLASSPATH (three times). We > > could > > > just do it in an hbase-2.0.0, a major version release, but then > > > downstreamers and coprocessors that may have been a little lazy and > that > > > have transitively come to depend on our versions of libs will break > [3]. > > > Then there is the murky area around the running of YARN/MR/Spark jobs > > where > > > the ordering of libs on the CLASSPATH gets interesting where fat-jaring > > or > > > command-line antics can get you over (most) problems if you persevere. > > > > > > Multiply the above by netty, jackson, and a few other favorites. > > > > > > Our proffered solution to the above is the shaded hbase artifact > project; > > > have applications and tasks refer to the shaded hbase client instead. > > > Because we've not done the work to narrow the surface area we expose to > > > downstreamers, most consumers of our API -- certainly in a spark/MR > > context > > > since our MR utility is buried in hbase-server module still -- need > both > > > the shaded hbase client and server on their CLASSPATH (i.e. near all of > > > hbase). > > > > > > Leaving aside for the moment that our shaded client and server need > > > untangling, getting folks up on the shaded artifacts takes effort > > > evangelizing. We also need to be doing work to make sure our shading > > > doesn't leak dependencies, that it works for all deploy scenarios, and > > that > > > this route forward is well doc'd, and so on. > > > > > > I don't see much evidence of our pushing the shaded artifacts route nor > > of > > > their being used. What is the perception of others? > > > > > > I played with adding a new module to host shaded 3rd party libs[4]. The > > > downsides are a couple; would have to internally, refer to the offset > > > version of the lib and we bulk up our tarball by a bunch of megs (Build > > > gets a few seconds longer, not much). Upside is that we can float over > a > > > variety of hadoop/spark versions using whatever guava or netty we want; > > > downstreamers and general users should have an easier time of it too > > > because they'll be less likely to run into library clashes. is this > > project > > > worth finishing? > > > > > > WDYT? > > > St.Ack > > > > > > 1. I wanted to make use of the protobuf to-json tool. It is in the > > > extra-jar, protobuf-util. It requires a guava 16.0. > > > 2. Guava is a quality lib that should be at the core of all our dev but > > we > > > are gun shy around using it because it semver's with gusto at a rate > that > > > is orders of magnitude in advance of the Hadoop/HBase cadence. > > > 3. We are trying to minimize breakage when we go to hbase-2.0.0. > > > 4. HBASE-15749 suggested this but was shutdown because it made no case > > for > > > why we'd want to do it. > > > > > > --001a1143a88ce73cd80547fcf8b5--