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 B17BE200D4F for ; Wed, 6 Dec 2017 18:18:02 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id AFD62160C0A; Wed, 6 Dec 2017 17:18:02 +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 CB01E160BF3 for ; Wed, 6 Dec 2017 18:18:01 +0100 (CET) Received: (qmail 37470 invoked by uid 500); 6 Dec 2017 17:18:01 -0000 Mailing-List: contact dev-help@accumulo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@accumulo.apache.org Delivered-To: mailing list dev@accumulo.apache.org Received: (qmail 37446 invoked by uid 99); 6 Dec 2017 17:18:00 -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, 06 Dec 2017 17:18:00 +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 F20AE180624 for ; Wed, 6 Dec 2017 17:17:59 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.22 X-Spam-Level: X-Spam-Status: No, score=-0.22 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=deenlo-com.20150623.gappssmtp.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id 9-jm7v0J9WnH for ; Wed, 6 Dec 2017 17:17:58 +0000 (UTC) Received: from mail-qt0-f181.google.com (mail-qt0-f181.google.com [209.85.216.181]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id C48CA5F263 for ; Wed, 6 Dec 2017 17:17:57 +0000 (UTC) Received: by mail-qt0-f181.google.com with SMTP id a16so10702540qtj.3 for ; Wed, 06 Dec 2017 09:17:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deenlo-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=82xTWTP6EmnjLVClATQ75PHgcPO3WmFGoZA2QJhYiBQ=; b=Ui7mpzh7HrLKkevJOhK3Ocpr1ybnqRQwp7IecxZV1pCrBAlpXOYqG8m3uLU6Ffl1Bl uMccwQBMHKzFbAGSKQJ4VUxU7tXMQabNuWljjQMZiUPUUTqwex2l3zP3rMxS/TX9eoHV yHdIZHKR8faqxqPnZISQCqAHUvYUJ9XFSF6IBVIewYu8spG79RkAAN/vfuTix23IrTJx 5zQ7UcKPbEpTteGoMT94ZozvxTLPQfOgcvMKzpB+BV/IsPqd/z5VEbyIjm1tCdaWXA29 Sp7ibeUJXD4YyGs5g+Ghu7DZkgomd7VtV+mPfrv3LjVcqK9+JXy1scGAyxlFphe6NaZJ HFOQ== 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=82xTWTP6EmnjLVClATQ75PHgcPO3WmFGoZA2QJhYiBQ=; b=plCSpXMi4k30ATCYjbuVkXml9R/bGk04nmwHtYlgU2f5I6x3DFlz9qtDoet9un581s eEJYfCtWo6jd8raea74BFIewQ00kKZLu4adYluarsaE1b9TTD5ItYBDP1aUV2WaMX4WZ R+XVgDSQAn+pfR5MMZiExacS4O1m2xqH/aZDEiNVek2NVhIe419YeVT7VCksK7VQnciG /T4UoFRQKhheWMKqzJpGWCfKJgeny0Kihv3BOSad3mGPzdQnYJq9wMX3RxEqMjGQ8BON FjhVvc/SGo96qrK9xGqsXpPa5uwbqkUotrMCfB/LbADiXeq6g9QvI8w93TPDKL99FhUu DUtw== X-Gm-Message-State: AKGB3mIMPs84YuWIv/H6CFDjoLVe1NarFQ7LQwoQJNrc0C5ond3WgWBH x/K9fL+32UOjN6lt4HEFSe9zU/GzUcJOXusVGOG3YEdc X-Google-Smtp-Source: AGs4zMbH57gfYJrRZEQpoUJZa4332FzHhEybFvUSmU67xVXUeqhCQcjvWDddYIiF37Wcs6ZpYbUOapM7Yt1txjLnqEY= X-Received: by 10.237.57.202 with SMTP id m68mr5323544qte.185.1512580676959; Wed, 06 Dec 2017 09:17:56 -0800 (PST) MIME-Version: 1.0 Received: by 10.12.187.129 with HTTP; Wed, 6 Dec 2017 09:17:56 -0800 (PST) In-Reply-To: References: <06fc51f8-814a-2899-c62b-15c7f1aeca0f@apache.org> <0174acbf-478d-eeee-32d5-6fb5255ad7d2@apache.org> <007301d36d57$7b7abce0$727036a0$@gmail.com> <3d2e197b-f3ad-4c37-69a1-b612f9a03a28@apache.org> From: Keith Turner Date: Wed, 6 Dec 2017 12:17:56 -0500 Message-ID: Subject: Re: [DISCUSS] Hadoop3 support target? To: Accumulo Dev List Content-Type: text/plain; charset="UTF-8" archived-at: Wed, 06 Dec 2017 17:18:02 -0000 On Wed, Dec 6, 2017 at 11:56 AM, Josh Elser wrote: > Maybe a difference in interpretation: > > I was seeing 1a as being source-compatible still. My assumption was that > "Deprecate ClientConfiguration" meant that it would remain in the codebase > -- "replace" as in "replace expected user invocation", not removal of the > old ClientConfiguration and addition of a new ClientConfig class. Ok, if we deprecate ClientConfiguration, leave it in 2.0, and drop the extends from ClientConfiguration in 2.0. Then I am not sure what the benefit of introducing the new ClientConfig type is? > > > On 12/6/17 11:29 AM, Keith Turner wrote: >> >> On Wed, Dec 6, 2017 at 11:28 AM, Josh Elser wrote: >>> >>> 1.a sounds better to me. >> >> >> why? >> >>> >>> A would be the ideal solution, I think B is the next best if A doesn't >>> work. >>> >>> I need to get the Hadoop3 compatibility fixed, so I'll be investigating >>> the >>> Hadoop shaded artifacts this week. >>> >>> >>> On 12/5/17 6:43 PM, Christopher wrote: >>>> >>>> >>>> I was wondering about Hadoop 3 shading and whether that would help us. >>>> It >>>> would be really nice if it could, or if there was some other class path >>>> solution that was easy. >>>> >>>> I think there are two major issues in this thread. The first is the API >>>> problems. The second is the Hadoop 3 support. They are related, but I >>>> think >>>> quickly dealing with the API issues can clarify what our options are for >>>> Hadoop 3. >>>> >>>> >>>> >>>> >>>> To fix the API, I would like to get consensus on proceeding with this >>>> path: >>>> >>>> 1. Rename 1.8.2-SNAPSHOT to 1.9.0-SNAPSHOT and deprecate the existing >>>> ZooKeeperInstance constructor which takes a Configuration >>>> a) Deprecate ClientConfiguration and replace with ClientConfig (or >>>> a >>>> better name) which does not extend Configuration or have API leak >>>> problems, >>>> and add a new ZKI constructor for this >>>> b) Ignore extends for now, and drop it from ClientConfiguration in >>>> 2.0 >>>> with a break (can't deprecate superclass), and add new ZKI constructor >>>> for >>>> more specific ClientConfiguration next to deprecated one >>>> 2. Drop deprecated stuff from 2.0 branch (and extends, if option 1.b was >>>> chosen) >>>> 3. Plan a 1.9.0 release instead of 1.8.2 >>>> >>>> I prefer 1.a over 1.b, personally, but I've been tossing back and forth. >>>> I >>>> would need input on which is best. There are pros and cons to both, >>>> regarding churn, and source and binary compatibility. >>>> >>>> >>>> >>>> >>>> Once we deal with the API, our options for Hadoop 3 become: >>>> >>>> A. Use Hadoop 3 shaded artifacts or some other class path solution (such >>>> as >>>> getting lucky identifying a version of commons-beanutils that works for >>>> both) >>>> B. Shade in 1.9 with a breaking change >>>> C. Create a 1.9 version named 2.0, so we can do a breaking change >>>> without >>>> semver violation; shade in this version >>>> D. Shade in the branch we're currently calling 2.0 >>>> >>>> I think we can defer that decision pending some further >>>> investigation/experimentation into what works, and deal with it after >>>> dealing with steps 1-3 above (but soon after, hopefully). >>>> >>>> >>>> >>>> On Tue, Dec 5, 2017 at 3:58 PM Josh Elser wrote: >>>> >>>>> Another potential suggestion I forgot about: we try to just move to the >>>>> Hadoop shaded artifacts. This would invalidate the need to do more, but >>>>> I have no idea how "battle-tested" those artifacts are. >>>>> >>>>> On 12/5/17 3:52 PM, Keith Turner wrote: >>>>>> >>>>>> >>>>>> If we do the following. >>>>>> >>>>>> * Drop ZooKeeperInstance.ZooKeeperInstance(Configuration config) >>>>> >>>>> >>>>> method. >>>>>> >>>>>> >>>>>> * Drop extends from ClientConfig >>>>>> * Add a method ZooKeeperInstance.ZooKeeperInstance(ClientConfig >>>>>> config) >>>>>> >>>>>> Then this will not be binary compatible, so it will still be painful >>>>>> in many cases. It may be source compatible. >>>>>> >>>>>> For example the following will be source (but not binary) compatible. >>>>>> >>>>>> ClientConfiguration cc = new ClientConfiguration(file); >>>>>> //when compiled against older version of Accumulo will bind to >>>>>> method with commons config signature >>>>>> //when recompiled will bind to clientconfig version of method >>>>>> ZooKeeperInstance zki = new ZooKeeperInstance(cc); >>>>>> >>>>>> The following would not be source or binary compatible. >>>>>> >>>>>> Configuration cc = new ClientConfiguration(file); >>>>>> ZooKeeperInstance zki = new ZooKeeperInstance(cc); >>>>>> >>>>>> >>>>>> On Tue, Dec 5, 2017 at 3:40 PM, Josh Elser wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On 12/5/17 3:28 PM, Keith Turner wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Dec 5, 2017 at 2:53 PM, Josh Elser >>>>>>>> wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Interesting. What makes you want to deprecate ClientConfig >>>>>>>>> entirely? >>>>>>>>> >>>>>>>>> I'd be worried about removing without sufficient thought of >>>>> >>>>> >>>>> replacement >>>>>>>>> >>>>>>>>> >>>>>>>>> around. It would be a bit "churn-y" to introduce yet another way >>>>>>>>> that >>>>>>>>> clients have to connect (since it was introduced in 1.6-ish?). >>>>>>>>> Working >>>>>>>>> around the ClientConfig changes was irritating for the downstream >>>>>>>>> integrations (Hive, most notably). >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Ok maybe thats a bad idea, not looking to cause pain. Here were >>>>>>>> some >>>>>>>> of my goals. >>>>>>>> >>>>>>>> * Remove commons config from API completely via deprecation >>>>>>>> cycle. >>>>>>>> * Introduce API that supports putting all props needed to >>>>>>>> connect >>>>>>>> to >>>>>>>> Accumulo in an API. >>>>>>>> >>>>>>>> I suppose if we want to keep ClientConfig class in API, then there >>>>>>>> is >>>>>>>> no way to remove commons config via a deprecation cycle?? We can't >>>>>>>> deprecate the extension of commons config, all we can do is just >>>>>>>> drop >>>>>>>> it at some point. >>>>>>>> >>>>>>> >>>>>>> My line of thinking is that the majority of the time, we're creating >>>>>>> a >>>>>>> ClientConfiguration by one of: >>>>>>> >>>>>>> * ClientConfiguration#loadDefault() >>>>>>> * new ClientConfiguration(String) >>>>>>> * new ClientConfiguration(File) >>>>>>> >>>>>>> Granted, we also inherit/expose a few other things (notably extending >>>>>>> CompositeConfiguration and throwing ConfigurationException). I would >>>>>>> be >>>>>>> comfortable with dropping those w/o deprecation. I have not seen >>>>> >>>>> >>>>> evidence >>>>>>> >>>>>>> >>>>>>> from anyone that they are widely in use by folks (although I've not >>>>>>> explicitly asked, either). >>>>> >>>>> >>>>> >>>> >>> >