You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by Damien Diederen <dd...@apache.org> on 2021/01/10 21:03:06 UTC

Re: 3.7.0: JDK 11 vs. JDK 8

Hi Andor, all,

Okay—a clear consensus has emerged in this thread.  3.7+ will follow the
same "JDK policy" as 3.6.

Thank you all for your input.

Cheers, -D



Andor Molnar <an...@apache.org> writes:
> Okay, let’s stay on JDK 8 with 3.7.0 release and do the transition in 4.0.
> Not sure if we want 3.8 release or make the master 4.0 from now on.
>
> Andor
>
>
>
>> On 2021. Jan 6., at 22:35, Christopher <ct...@apache.org> wrote:
>> 
>> I agree with Enrico on this point. If the ZK PMC is considering a 3.7
>> release, now would not be the right time to make this change, and it would
>> be better to make a change at the beginning of the next iteration.
>> 
>> That said, I think switching to builds with JDK 11 and supporting JDK 8
>> "passively" is the right thing to do for 3.8, and switching to JDK 11 fully
>> would be the right thing to do if the PMC decides to do a major version
>> bump to 4.0 instead of a 3.8.
>> 
>> On Wed, Jan 6, 2021 at 1:20 PM Enrico Olivelli <eo...@gmail.com> wrote:
>> 
>>> In my opinion we can stay on 8, we should change this kind of stuff at the
>>> beginning of a new iteration and not before the release.
>>> IIRC We are not in a hurry, having a stable build process is a value.
>>> 
>>> Enrico
>>> 
>>> Il Mer 6 Gen 2021, 17:51 Damien Diederen <dd...@apache.org> ha
>>> scritto:
>>> 
>>>> 
>>>> Dear ZooKeeper team,
>>>> 
>>>> Andor just reminded me of this JDK 11 vs. 8 discussion, for which we did
>>>> not reach a resolution.  Do we want to make a move for the 3.7.0 release?
>>>> 
>>>> The original proposal, by Christopher, can be found here:
>>>> 
>>>> 
>>>> 
>>>
> https://mail-archives.apache.org/mod_mbox/zookeeper-dev/202010.mbox/%3cCAL5zq9Z2TNfAwjZ7etXPF91QmROvUWV+KHnxgPSD_MSeKfpyWA@mail.gmail.com%3e
>>>> 
>>>> I am explicitly replying to Christopher's nice and useful summary, which
>>>> you will find directly below.  An archived copy can be found here:
>>>> 
>>>> 
>>>> 
>>>
> https://mail-archives.apache.org/mod_mbox/zookeeper-dev/202010.mbox/%3cCAL5zq9ao9-4S9bmzxaYJM8n8=AoLxiDZ-0ZohunVnAyQei0zAg@mail.gmail.com%3e
>>>> 
>>>> It contains three proposals, to which we can add the trivial one:
>>>> 
>>>> 1. Compile/test with JDK 11, support JDK 8 "passively";
>>>> 
>>>> 2. Compile/test with JDK 11, test client only with JDK 8 (requires test
>>>>    suite adaptations);
>>>> 
>>>> 3. Move to JDK 11 fully;
>>>> 
>>>> 4. Postpone any change to 3.8 (or 4.0).
>>>> 
>>>> Flavio wrote:
>>>> 
>>>>> [Christopher] mentioned a PMC vote, and I don't think this should be a
>>>>> closed vote, independent of how the conversation goes.
>>>> 
>>>> Do we have a better idea of what we want?  Or should we organize a vote?
>>>> 
>>>> Cheers, -D
>>>> 
>>>> 
>>>> --8<--------------- original message ------------->8---
>>>> 
>>>> Christopher <ct...@apache.org> writes:
>>>>> I'm happy that this discussion has been so lively! I just want to
>>>>> emphasize a few things:
>>>>> 
>>>>> I really do understand the desire to continue to support Java 8... I
>>>>> get it. But all the conversations around this seem based on what
>>>>> people are doing *today*. But, ZK 3.7 is *tomorrow's* version... a
>>>>> *future* release... so it should be based more on reasonable
>>>>> expectations for users in the future, and less based on what is
>>>>> happening today. I suspect *most* people today are still using 3.4
>>>>> anyway (it was just so stable for so long...), but that shouldn't mean
>>>>> the developers should hold back development on 3.5 and 3.6, any more
>>>>> than today's users of 3.5/3.6 should hold back 3.7.
>>>>> 
>>>>> Some of the opinions expressed in this discussion seem to propose a
>>>>> scenario where users are going to be updating to "bleeding edge"
>>>>> versions of ZooKeeper, but are going to insist on using Java 8.
>>>>> Personally, I find this to be implausible. In my experience, people
>>>>> either upgrade everything as soon as they are able to, or they upgrade
>>>>> each thing individually, only when they are forced to. The first group
>>>>> will be happy to move to Java 11 and ZK 3.7. The second group will
>>>>> probably avoid 3.7 anyway, and are fine sticking with 3.6, but if they
>>>>> had to update to 3.7, they'd also be fine updating to Java 11 if they
>>>>> had to in order to use 3.7. I can't imagine the scenario where people
>>>>> are eagerly choosing to upgrade to ZK 3.7, but miserly insisting on
>>>>> using Java 8. Perhaps that scenario exists, but it's hard for me to
>>>>> imagine. Even so, my proposal would still support even that group of
>>>>> people.
>>>>> 
>>>>> I think there are now effectively three proposals being discussed in
>>>>> this thread:
>>>>> 
>>>>> 1. (Christopher's original proposal) passively support Java 8 at
>>>>> runtime by making JDK 11 the minimum requirement to build and test.
>>>>> This scenario involves continuing to fix bugs, as they are discovered
>>>>> and reported, that affect JDK 8, but passively, rather than
>>>>> proactively. This proposal does *not* drop Java 8 support, but merely
>>>>> de-emphasizes it in development of what will be 3.7 in the future, and
>>>>> drops the requirement to do dedicated testing with Java 8. I think
>>>>> this is low risk, because it is very unlikely that the ZK devs would
>>>>> introduce a bug that would affect only Java 8 and the compiler
>>>>> wouldn't catch it... because the cross-compilation features of newer
>>>>> JDKs are really good.
>>>>> 
>>>>> 2. (Enrico's alternate proposal) this variation of my proposal would
>>>>> involve continuing to proactively support Java 8 by creating a
>>>>> dedicated testing suite to test client code on Java 8. I think this is
>>>>> a good option, but since it involves a significantly higher amount of
>>>>> work than option 1, I think the cost-benefit analysis would show this
>>>>> to be not worth the effort. Also, if it were implemented, it would
>>>>> need to be done carefully to avoid requiring developers to have
>>>>> concurrently installed both Java 8 and Java 11 in order to perform a
>>>>> build, because requiring Java 8 at build time while developing would
>>>>> be worse than we have today.
>>>>> 
>>>>> 3. (Andor's preference) move to JDK 11 fully. This would provide no
>>>>> support, passive or active, for Java 8 in ZK 3.7. To be honest, this
>>>>> is my personal favorite, and is the simplest to implement and
>>>>> communicate clearly to end users in release notes. The only reason I
>>>>> proposed a passive support of Java 8 instead of this is because I was
>>>>> trying to seek a compromise from the start. But, I think by far, this
>>>>> is the best option for the next *future* release of ZK. If you wanted
>>>>> to make the change even more visible to users, the version could even
>>>>> be bumped to 4.0.
>>>>> 
>>>>> If this were to come to a VOTE by the PMC, in order to make a final
>>>>> decision, I would recommend they vote on option 3, and then if that
>>>>> fails, vote on option 1, and if that fails, keep things the way they
>>>>> are (because option 2 is more work).
>>>>> 
>>>>> Christopher
>>>>> 
>>>>> P.S. as for Hadoop on Java 11... I've been running Hadoop 3 on JDK 11
>>>>> and it works just fine there (as long as you add the missing runtime
>>>>> jar for javax.activation:javax.activation-api:1.2.0 to its class path,
>>>>> but that was fixed in Hadoop 3.3).
>>>>> 
>>>>> On Wed, Oct 21, 2020 at 5:42 PM Tamas Penzes
>>>>> <ta...@cloudera.com.invalid> wrote:
>>>>>> 
>>>>>> Hi All,
>>>>>> 
>>>>>> I've just talked with a Hadoop/HDFS developer who told me what I
>>>> guessed.
>>>>>> With Hadoop3 they have just dropped JDK7 support, dropping JDK8 would
>>>> mean
>>>>>> a release of Hadoop4.
>>>>>> Since HADOOP-15338 is finished, they test with JDK8 and JDK11 both. As
>>>> of
>>>>>> today most of the Hadoop users are still on Hadoop2, he doesn't expect
>>>>>> Hadoop4 soon.
>>>>>> As many Apache components depend on Hadoop and ZooKeeper they won't
>>>> hurry
>>>>>> to JDK11 until they have to (they will probably go one-by-one very
>>>> slowly),
>>>>>> which means if Hadoop stays on JDK8, they would use the last ZK
>>> version
>>>>>> which works on JDK8.
>>>>>> Do we want a ZK 3.4 again?
>>>>>> 
>>>>>> Regards, Tamaas
>>>>>> 
>>>>>> 
>>>>>> On Wed, Oct 21, 2020 at 11:23 PM Tamas Penzes <ta...@cloudera.com>
>>>> wrote:
>>>>>> 
>>>>>>> Hi All,
>>>>>>> 
>>>>>>> Just to add my two cents.
>>>>>>> 
>>>>>>> Upgrading to JDK11 looks inevitable sooner or later and I would
>>>> definitely
>>>>>>> not wait until 2030 or 2026 when the extended support of JDK8 ends.
>>>>>>> But on the other side I have to agree with Enrico and Patrick that
>>>> far too
>>>>>>> many users are tied to JDK8 yet (not because they want to use JDK8,
>>>> but
>>>>>>> because they have to), some of them are components of the Hadoop
>>>> ecosystem,
>>>>>>> which would be a loss to tie them to 3.6.x for years.
>>>>>>> Do we know the state of Hadoop? It builds with JDK8 at the moment,
>>>> but do
>>>>>>> we know what are their plans to go to JDK11?
>>>>>>> When they move, we should move too, but I don't think it would be
>>>> wise to
>>>>>>> do it earlier.
>>>>>>> 
>>>>>>> Christopher's option looks like the golden path, but it needs some
>>>>>>> investment on the testing side as Enrico pointed it out.
>>>>>>> Could we agree on it as a compromise?
>>>>>>> 
>>>>>>> Regards, Tamaas
>>>>>>> 
>>>>>>> On Wed, Oct 21, 2020 at 7:11 PM Brent <br...@gmail.com>
>>>> wrote:
>>>>>>> 
>>>>>>>> I think I was reacting to Enrico's earlier comment of:
>>>>>>>> 
>>>>>>>> " ZooKeeper client is used by tons of users and unfortunately many
>>>>>>>> projects
>>>>>>>> are still on JDK8, if we move ZooKeeper to JDK11 the risk is to
>>> block
>>>>>>>> users
>>>>>>>> from the adoption, that is that we will see the world to stay on
>>>> 3.6.x and
>>>>>>>> we will have again a long lived release line, like 3.4."
>>>>>>>> 
>>>>>>>> It's a matter of whether or not a long-lived release line is
>>>>>>>> desirable/undesirable.  If everyone is OK keeping 3.6.x up-to-date
>>>>>>>> security/patch-wise (if not feature-wise) for the next N years,
>>> then
>>>>>>>> that's
>>>>>>>> a potentially valid approach.  I interpreted that comment as "a
>>>> long-lived
>>>>>>>> release line is undesirable", but no one explicitly said that, I
>>>> just read
>>>>>>>> it that way.
>>>>>>>> 
>>>>>>>> ~Brent
>>>>>>>> 
>>>>>>>> On Wed, Oct 21, 2020 at 9:49 AM Patrick Hunt <ph...@apache.org>
>>>> wrote:
>>>>>>>> 
>>>>>>>>> On Wed, Oct 21, 2020 at 9:03 AM Andor Molnar <an...@apache.org>
>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> As far as I know Hbase, Solr and Kafka are already Java 11
>>> ready.
>>>>>>>>>> 
>>>>>>>>>> IMHO contributors of those projects should also put efforts
>>> into
>>>>>>>> moving
>>>>>>>>>> forward.
>>>>>>>>>> 
>>>>>>>>>> We’re not saying that you _have_ to move to Java 11.
>>>>>>>>>> Staying on Java 8? No problem, 3.6 is for you.
>>>>>>>>>> Want the fancy new features of 3.7? Work on it on your side
>>> too.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> ppl want things like security fixes. I believe the highlighted
>>>> downside
>>>>>>>> is
>>>>>>>>> that we would need to continue to maintain 3.6.x rather than
>>>> allowing
>>>>>>>>> users, and ourselves, to focus on trunk for production -"64
>>>> percent"
>>>>>>>> would
>>>>>>>>> be blocked.
>>>>>>>>> 
>>>>>>>>> Patrick
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> Andor
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> On 2020. Oct 21., at 17:52, Enrico Olivelli <
>>>> eolivelli@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Il giorno mer 21 ott 2020 alle ore 17:49 Andor Molnar <
>>>>>>>>> andor@apache.org>
>>>>>>>>>> ha
>>>>>>>>>>> scritto:
>>>>>>>>>>> 
>>>>>>>>>>>> Correct me if I'm wrong, but Oracle gets paid for extended
>>>> support.
>>>>>>>>>>>> Java 8 support until 2030 is not free of charge.
>>>>>>>>>>>> 
>>>>>>>>>>>> "ZK may end up with a lot of users potentially locking
>>>> themselves
>>>>>>>> to
>>>>>>>>>>>> 3.6.x for a while as Enrico mentioned."
>>>>>>>>>>>> 
>>>>>>>>>>>> That's true. What's the downside of that which we should
>>>> invest in
>>>>>>>> to
>>>>>>>>>>>> avoid?
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> I see ZooKeeper used in many many projects, all of the
>>>>>>>>>>> HBase/Pulsar/Kafka/Solr ecosystem...
>>>>>>>>>>> they will have to move to JDK11 in order to move to the new
>>> ZK
>>>>>>>> version
>>>>>>>>>>> so probably they will stay on ZK 3.6
>>>>>>>>>>> 
>>>>>>>>>>> Probably with Java 17 LTS released the cards will change on
>>> the
>>>>>>>> table
>>>>>>>>>>> 
>>>>>>>>>>> Enrico
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Andor
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On Wed, 2020-10-21 at 08:03 -0700, Brent wrote:
>>>>>>>>>>>>> As a slightly different consideration, if you look at the
>>>>>>>> Long-Term
>>>>>>>>>>>>> Support
>>>>>>>>>>>>> (LTS) roadmaps for Java, currently Java 8 is set to have
>>> full
>>>>>>>> support
>>>>>>>>>>>>> until
>>>>>>>>>>>>> 2030 from Oracle and at least 2026 from OpenJDK & Corretto:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>> 
>>>> https://www.oracle.com/java/technologies/java-se-support-roadmap.html
>>>>>>>>>>>>> https://en.wikipedia.org/wiki/Java_version_history
>>>>>>>>>>>>> 
>>>>>>>>>>>>> My guess is that a number of companies are still heavily
>>>> invested
>>>>>>>> at
>>>>>>>>>>>>> the
>>>>>>>>>>>>> Java 8 level (I know a few) and with that kind of time
>>>> horizon,
>>>>>>>> they
>>>>>>>>>>>>> have
>>>>>>>>>>>>> no real motivation to upgrade for quite a while.  If the
>>>> recent
>>>>>>>>>>>>> Python 2
>>>>>>>>>>>>> deprecation is anything to go by, they won't do it until
>>>> they have
>>>>>>>>>>>>> to.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Not saying Java 8 isn't *very* old (2014 release it seems
>>>> like?)
>>>>>>>> and
>>>>>>>>>>>>> I'm
>>>>>>>>>>>>> not invested heavily either way, but this might suggest
>>> that
>>>> ZK
>>>>>>>> may
>>>>>>>>>>>>> end up
>>>>>>>>>>>>> with a lot of users potentially locking themselves to 3.6.x
>>>> for a
>>>>>>>>>>>>> while as
>>>>>>>>>>>>> Enrico mentioned.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> (Not a major contributor, but wanted to chime in since I
>>>> just had
>>>>>>>>>>>>> this
>>>>>>>>>>>>> conversation with a bunch of people professionally
>>> recently)
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Brent
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Wed, Oct 21, 2020 at 2:07 AM Andor Molnar <
>>>> andor@apache.org>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Thanks for the summary.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I still vote for option 1). Move 3.7.0 to JDK 11 fully.
>>>> Other
>>>>>>>>>>>>>> projects
>>>>>>>>>>>>>> will upgrade once they’re JDK11 compliant, otherwise they
>>>> will
>>>>>>>> stay
>>>>>>>>>>>>>> on 3.5
>>>>>>>>>>>>>> or 3.6. Both version are quite recent in ZooKeeper-terms,
>>> we
>>>>>>>>>>>>>> already
>>>>>>>>>>>>>> planned big changes for 3.7.0 and JDK 11 could be one of
>>>> them.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Don’t put extra burden on the ZK community to help others
>>>> staying
>>>>>>>>>>>>>> on
>>>>>>>>>>>>>> ancient Java versions.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Andor
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On 2020. Oct 21., at 10:57, Enrico Olivelli <
>>>>>>>> eolivelli@gmail.com>
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Let me recap
>>>>>>>>>>>>>>> - Christopher is proposing to move to JDK11
>>>>>>>>>>>>>>> - ZooKeeper client and server are bundled and coded and
>>>> tested
>>>>>>>>>>>>>>> together
>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>> zookeeper-server
>>>>>>>>>>>>>>> - Enrico is concerned about the need of testing ZooKeeper
>>>> client
>>>>>>>>>>>>>>> on JDK8
>>>>>>>>>>>>>>> (not a problem to move the server to JDK11)
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> ZooKeeper client is used by tons of users and
>>>> unfortunately many
>>>>>>>>>>>>>>> projects
>>>>>>>>>>>>>>> are still on JDK8, if we move ZooKeeper to JDK11 the risk
>>>> is to
>>>>>>>>>>>>>>> block
>>>>>>>>>>>>>> users
>>>>>>>>>>>>>>> from the adoption,
>>>>>>>>>>>>>>> that is that we will see the world to stay on 3.6.x and
>>> we
>>>> will
>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>> again
>>>>>>>>>>>>>>> a long lived release line, like 3.4.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Testing the client on JDK8 would be possible if we create
>>>> some
>>>>>>>>>>>>>>> kind of
>>>>>>>>>>>>>>> additional module with system tests, then we can start
>>> the
>>>>>>>> server
>>>>>>>>>>>>>>> on
>>>>>>>>>>>>>> docker
>>>>>>>>>>>>>>> on JDK11+ and start a client on JDK8
>>>>>>>>>>>>>>> with Maven toolchain it should possible to run surefire
>>>> tests
>>>>>>>>>>>>>>> using a
>>>>>>>>>>>>>>> separate JVM.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> So in my vision 2 options:
>>>>>>>>>>>>>>> 1) fully JDK11 - drop JDK8 at all
>>>>>>>>>>>>>>> 2) build with JDK11 - server only on JDK11 - add system
>>>> tests
>>>>>>>>>>>>>>> with docker
>>>>>>>>>>>>>>> and toolchains that ensure the ZooKeeper client (and all
>>>>>>>>>>>>>>> dependencies)
>>>>>>>>>>>>>>> still work on JDK8
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> From my point of view about the ZooKeeper ecosystem
>>> option
>>>> 2)
>>>>>>>>>>>>>>> will be far
>>>>>>>>>>>>>>> better, but we need resources to work on a new test
>>> suite.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Enrico
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Il giorno mer 21 ott 2020 alle ore 10:43 Andor Molnar <
>>>>>>>>>>>>>>> andor@apache.org>
>>>>>>>>>>>>>> ha
>>>>>>>>>>>>>>> scritto:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Tamas, Enrico,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Sorry I don’t follow. Why do we have to test the client
>>>> with
>>>>>>>>>>>>>>>> JDK 8 in
>>>>>>>>>>>>>>>> version 3.7.0?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Andor
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On 2020. Oct 20., at 22:29, Tamas Penzes <
>>>>>>>>>>>>>>>>> tamaas@cloudera.com.INVALID>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>> Hi Enrico,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Separating ZooKeeper client and server is a huge work,
>>>> but we
>>>>>>>>>>>>>>>>> might not
>>>>>>>>>>>>>>>>> need it.
>>>>>>>>>>>>>>>>> As you mentioned we have to test ZK client with Java 8,
>>>> what
>>>>>>>>>>>>>>>>> about
>>>>>>>>>>>>>>>>> separating only the test cases which we need to run
>>> with
>>>>>>>>>>>>>>>>> Java8 too?
>>>>>>>>>>>>>>>>> In Curator we have the ZK compatibility tests where we
>>>> run a
>>>>>>>>>>>>>>>>> limited
>>>>>>>>>>>>>>>> amount
>>>>>>>>>>>>>>>>> of Curator's jUnit tests with a different ZK version.
>>>>>>>>>>>>>>>>> We might be able to do the same here, tag tests which
>>> are
>>>>>>>>>>>>>>>>> testing ZK
>>>>>>>>>>>>>>>> client
>>>>>>>>>>>>>>>>> and run them separately with Java 8. The only
>>> limitation
>>>> is
>>>>>>>>>>>>>>>>> that these
>>>>>>>>>>>>>>>>> tests must stay JDK8 compatible.
>>>>>>>>>>>>>>>>> But from the tags we will see which ones are those.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> What do you think?
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Regards, Tamaas
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On Sat, Oct 17, 2020 at 7:45 AM Enrico Olivelli <
>>>>>>>>>>>>>>>>> eolivelli@gmail.com>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>> Christopher
>>>>>>>>>>>>>>>>>> I appreciate your idea and I also moved lots of my
>>>> projects
>>>>>>>>>>>>>>>>>> to work
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> way
>>>>>>>>>>>>>>>>>> you are suggesting.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> We must run tests using real jdk8 to test the
>>> Zookeeper
>>>>>>>>>>>>>>>>>> client. We
>>>>>>>>>>>>>> must
>>>>>>>>>>>>>>>>>> ensure that Zookeeper works well, especially while
>>>> dealing
>>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>> security
>>>>>>>>>>>>>>>>>> stuff.
>>>>>>>>>>>>>>>>>> Currently the client is in the same module of the
>>> server
>>>>>>>>>>>>>>>>>> and it will
>>>>>>>>>>>>>>>> take a
>>>>>>>>>>>>>>>>>> good (huge) amount of work to separate them
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Enrico
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Il Ven 16 Ott 2020, 23:25 Christopher <
>>>> ctubbsii@apache.org>
>>>>>>>>>>>>>>>>>> ha
>>>>>>>>>>>>>> scritto:
>>>>>>>>>>>>>>>>>>> Hi ZK Devs,
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> With recent advancements in Java (since Java 9), it
>>> is
>>>>>>>>>>>>>>>>>>> now generally
>>>>>>>>>>>>>>>>>>> no longer necessary to require that software be
>>>> developed
>>>>>>>>>>>>>>>>>>> on an older
>>>>>>>>>>>>>>>>>>> JDK in order to have confidence that it will run on
>>> the
>>>>>>>>>>>>>>>>>>> older version
>>>>>>>>>>>>>>>>>>> of Java. This is because, as of Java 9, all JDK
>>>> releases
>>>>>>>>>>>>>>>>>>> have better
>>>>>>>>>>>>>>>>>>> support for cross-compilation to older Java versions.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> What this means is that developers can confidently
>>> make
>>>>>>>>>>>>>>>>>>> the build
>>>>>>>>>>>>>>>>>>> requirements for a project higher than the Java
>>> version
>>>>>>>>>>>>>>>>>>> that will
>>>>>>>>>>>>>>>>>>> actually be supported at runtime.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> In fact, ZooKeeper already supports the necessary
>>> flags
>>>>>>>>>>>>>>>>>>> in its Maven
>>>>>>>>>>>>>>>>>>> build configuration to ensure that it uses JDK 8
>>>>>>>>>>>>>>>>>>> compliance when
>>>>>>>>>>>>>>>>>>> building on a newer JDK (I added this way back in
>>>>>>>>>>>>>>>>>>> ZOOKEEPER-3739 /
>>>>>>>>>>>>>>>>>>> https://github.com/apache/zookeeper/pull/1269)
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> So, I propose that we make JDK 11 the new minimum
>>>> version
>>>>>>>>>>>>>>>>>>> to *build*
>>>>>>>>>>>>>>>>>>> ZooKeeper with. This would not change the runtime
>>>>>>>>>>>>>>>>>>> requirement, which
>>>>>>>>>>>>>>>>>>> would remain at JDK 8.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> The only necessary change to make this happen would
>>> be
>>>> to
>>>>>>>>>>>>>>>>>>> add the
>>>>>>>>>>>>>>>>>>> minimum Java version to the maven-enforcer-plugin
>>> (like
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>> 
>>>> 
>>>
> https://github.com/apache/accumulo/blob/438f0efd34ef9d200bc8c7ecdd11d5dedb146519/pom.xml#L1162-L1164
>>>>>>>>>>>>>>>>>>> )
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> This would allow ZooKeeper to to streamline its
>>>>>>>>>>>>>>>>>>> development process a
>>>>>>>>>>>>>>>>>>> little bit by reducing the amount of CI testing that
>>> is
>>>>>>>>>>>>>>>>>>> done as part
>>>>>>>>>>>>>>>>>>> of the build. In other words, we can drop the CI
>>> builds
>>>>>>>>>>>>>>>>>>> for JDK 8,
>>>>>>>>>>>>>>>>>>> which saves on build resources and time. The return
>>> on
>>>>>>>>>>>>>>>>>>> investment is
>>>>>>>>>>>>>>>>>>> so low for the JDK 8 builds anyway, because of the
>>>>>>>>>>>>>>>>>>> improved
>>>>>>>>>>>>>>>>>>> cross-compilation in newer JDKs. So, there's not much
>>>>>>>>>>>>>>>>>>> value in
>>>>>>>>>>>>>>>>>>> building on JDK 8 anyway.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Of course, I am only recommending this for *new*
>>>> release
>>>>>>>>>>>>>>>>>>> lines,
>>>>>>>>>>>>>>>>>>> starting with ZooKeeper 3.7.0/master branch, because
>>> I
>>>>>>>>>>>>>>>>>>> would not want
>>>>>>>>>>>>>>>>>>> to change expectations for users who will build their
>>>> own
>>>>>>>>>>>>>>>>>>> 3.5 and 3.6
>>>>>>>>>>>>>>>>>>> versions as they continue to have patch versions
>>>>>>>>>>>>>>>>>>> released.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> What do you think?
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Kind Regards,
>>>>>>>>>>>>>>>>>>> Christopher
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>> 
>>>