As a gut check, the idea of bundling a JRE with C* appeals to me from
a "control your variables" perspective. Simplifies quite a bit of this
problem imo.

On Wed, Mar 21, 2018 at 9:04 AM, Stefan Podkowinski <s...@apache.org> wrote:
> There's also another option, which I just want to mention here for the
> sake of discussion.
>
> Quoting the Oracle Support Roadmap:
> "Instead of relying on a pre-installed standalone JRE, we encourage
> application developers to deliver JREs with their applications."
>
> I've played around with Java 9 a while ago and also tested creating a
> self contained JRE using jlink, which you can bundle and ship with your
> application. So there's a technical solution for that with Java 9. Of
> course you'd have to clarify licensing issues (OpenJDK is GPLv2 +
> Classpath exception) first.
>
> Bundling a custom JRE along with Cassandra, would be convenient in a way
> that we can do all the testing against the bundled Java version. We
> could also switch to a new Java version whenever it fits us. Like e.g.
> apache-cassandra-4.0.14_openjdk11u321 and two months later release
> apache-cassandra-4.0.15_openjdk12u123. History has shown that planing
> and timing new releases isn't always working out for us as expected. I'd
> rather prefer not having to tightly coordinate our own releases together
> with OpenJDK releases, if it can be avoided. At the same time I'd like
> to avoid having users updating to incompatible JREs (think about
> 8u161/#14173), or have them constantly ask which JRE version to use for
> which Cassandra version, always with the risk of automatic updates
> causing unexpected issues. Bundling the JRE may help us with that, as it
> would become more a matter of testing and getting CI turn green, before
> we're ready to bundle the next major JRE update, without getting the
> user involved at all.
>
> If you would prefer using a global system JRE, that should still be
> possible by installing an unbundled Cassandra version, but you'd have to
> pay attention which Java version to use for which Cassandra release,
> possibly having to provide patches and do some testing for more recent
> Cassandra versions, in case of compatibility issues. If we update 3.11
> to Java 13 in mid 2019, we'd have to provide release candidates that can
> be used for testing for such incompatibilities by LTS users and have
> them provide patches, which then have to fully work with Java 13 of
> course. Otherwise I can't see how to make Oracle/Redhat/IBM/Azul LTS
> releases work, except on this best effort basis without official support
> guarantees by us.
>
> I'm not too enthusiastic about this perspective. But I wouldn't
> completely dismiss it either, without talking about all the other
> options first.
>
>
> On 20.03.2018 22:32, Ariel Weisberg wrote:
>> Hi,
>>
>> Synchronizing with Oracle LTS releases is kind of low value if it's a paid 
>> offering. But if someone in the community doesn't want to upgrade and pays 
>> Oracle we don't want to get in the way of that.
>>
>> Which is how you end up with what Jordan and ElasticSearch suggest. I'm 
>> still +1 on that although in my heart of hearts I want  to only support the 
>> latest OpenJDK on trunk and after we cut a release only change the JDK if 
>> there is a serious issue.
>>
>> It's going to be annoying once we have a serious security or correctness 
>> issue and we need to move to a later OpenJDK. The majority won't be paying 
>> Oracle for LTS. I don't think that will happen that often though.
>>
>> Regards,
>> Ariel
>>
>> If that ends up not working and we find it's a problem to not be getting
>> On Tue, Mar 20, 2018, at 4:50 PM, Jason Brown wrote:
>>> Thanks to Hannu and others pointing out that the OracleJDK is a
>>> *commercial* LTS, and thus not an option. mea culpa for missing the
>>> "commercial" and just focusing on the "LTS" bit. OpenJDK is is, then.
>>>
>>> Stefan's elastic search link is rather interesting. Looks like they are
>>> compiling for both a LTS version as well as the current OpenJDK. They
>>> assume some of their users will stick to a LTS version and some will run
>>> the current version of OpenJDK.
>>>
>>> While it's extra work to add JDK version as yet another matrix variable in
>>> addition to our branching, is that something we should consider? Or are we
>>> going to burden maintainers even more? Do we have a choice? Note: I think
>>> this is similar to what Jeremiah is proposed.
>>>
>>> @Ariel: Going beyond 3 years could be tricky in the worst case because
>>> bringing in up to 3 years of JDK changes to an older release might mean
>>> some of our dependencies no longer function and now it's not just minor
>>> fixes it's bringing in who knows what in terms of updated dependencies
>>>
>>> I'm not sure we have a choice anymore, as we're basically bound to what the
>>> JDK developers choose to do (and we're bound to the JDK ...). However, if
>>> we have the changes necessary for the JDK releases higher than the LTS (if
>>> we following the elastic search model), perhaps it'll be a reasonably
>>> smooth transition?
>>>
>>> On Tue, Mar 20, 2018 at 1:31 PM, Jason Brown <jasedbr...@gmail.com> wrote:
>>>
>>>> copied directly from dev channel, just to keep with this ML conversation
>>>>
>>>> 08:08:26  <snazy> Robert Stupp jasobrown: https://www.azul.com/java-
>>>> stable-secure-free-choose-two-three/ and https://blogs.oracle.com/java-
>>>> platform-group/faster-and-easier-use-and-redistribution-of-java-se
>>>> 08:08:38 the 2nd says: "The Oracle JDK will continue as a commercial long
>>>> term support offering"
>>>> 08:08:46 also: http://www.oracle.com/technetwork/java/eol-135779.html
>>>> 08:09:21 the keyword in that cite is "commercial"
>>>> 08:21:21 <exlt> Michael Shuler a couple more thoughts.. 1) keep C*
>>>> support in step with latest Ubuntu LTS OpenJDK major in main, 2) bundle JRE
>>>> in C* releases? (JDK is not "legal" to bundle)
>>>> 08:23:44 <spodkowinski> https://www.elastic.co/blog/elasticsearch-
>>>> java-9-and-beyond  - interesting read on that matter
>>>> 08:26:04 can't wait for the infra and CI testing implications.. will be
>>>> lot's of fun ;(
>>>> 08:42:13 <snazy> Robert Stupp Not sure whether stepping with Ubuntu is
>>>> necessary. It's not so difficult to update apt.source ;)
>>>> 08:42:43 CI ? It just let's your test matrix explode - a litte ;)
>>>> 08:46:48 <exlt> Michael Shuler yep, we currently `def jdkLabel = 'JDK 1.8
>>>> (latest)'` in job DSL and could easily modify that
>>>>
>>>> On Tue, Mar 20, 2018 at 9:08 AM, Kant Kodali <k...@peernova.com> wrote:
>>>>
>>>>> Java 10 is releasing today!
>>>>>
>>>>> On Tue, Mar 20, 2018 at 9:07 AM, Ariel Weisberg <ar...@weisberg.ws>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> +1 to what Jordan is saying.
>>>>>>
>>>>>> It seems like if we are cutting a release off of trunk we want to make
>>>>>> sure we get N years of supported JDK out of it. For a single LTS
>>>>> release N
>>>>>> could be at most 3 and historically that isn't long enough and it's very
>>>>>> likely we will get < 3 after a release is cut.
>>>>>>
>>>>>> Going beyond 3 years could be tricky in the worst case because bringing
>>>>> in
>>>>>> up to 3 years of JDK changes to an older release might mean some of our
>>>>>> dependencies no longer function and now it's not just minor fixes it's
>>>>>> bringing in who knows what in terms of updated dependencies.
>>>>>>
>>>>>> I think in some cases we are going to need to take a release we have
>>>>>> already cut and make it work with an LTS release that didn't exist when
>>>>> the
>>>>>> release was cut.
>>>>>>
>>>>>> We also need to update how CI works. We should at least build and run a
>>>>>> quick smoke test with the JDKs we are claiming to support and
>>>>>> asynchronously run all the tests on the rather large matrix that now
>>>>> exists.
>>>>>>
>>>>>> Ariel
>>>>>>
>>>>>> On Tue, Mar 20, 2018, at 11:07 AM, Jeremiah Jordan wrote:
>>>>>>> My suggestion would be to keep trunk on the latest LTS by default, but
>>>>>>> with compatibility with the latest release if possible.  Since Oracle
>>>>>>> LTS releases are every 3 years, I would not want to tie us to that
>>>>>>> release cycle?
>>>>>>> So until Java 11 is out that would mean trunk should work under Java
>>>>> 8,
>>>>>>> with the option of being compiled/run under Java 9 or 10.  Once Java
>>>>> 11
>>>>>>> is out we could then switch to 11 only.
>>>>>>>
>>>>>>> -Jeremiah
>>>>>>>
>>>>>>> On Mar 20, 2018, at 10:48 AM, Jason Brown <jasedbr...@gmail.com>
>>>>> wrote:
>>>>>>>
>>>>>>>>>> Wouldn't that potentially leave us in a situation where we're
>>>>> ready
>>>>>> for
>>>>>>>> a C* release but blocked waiting on a new LTS cut?
>>>>>>>>
>>>>>>>> Agreed, and perhaps if we're close enough to a LTS release (say
>>>>> three
>>>>>>>> months or less), we could choose to delay (probably with community
>>>>>>>> input/vote). If we're a year or two out, then, no, we should not
>>>>> wait.
>>>>>> I
>>>>>>>> think this is what I meant to communicate by "Perhaps we can
>>>>> evaluate
>>>>>> this
>>>>>>>> over time." (poorly stated, in hindsight)
>>>>>>>>
>>>>>>>>> On Tue, Mar 20, 2018 at 7:22 AM, Josh McKenzie <
>>>>> jmcken...@apache.org>
>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Need a little clarification on something:
>>>>>>>>>
>>>>>>>>>> 2) always release cassandra on a LTS version
>>>>>>>>> combined with:
>>>>>>>>>> 3) keep trunk on the lasest jdk version, assumming we release a
>>>>> major
>>>>>>>>>> cassandra version close enough to a LTS release.
>>>>>>>>>
>>>>>>>>> Wouldn't that potentially leave us in a situation where we're ready
>>>>>>>>> for a C* release but blocked waiting on a new LTS cut? For
>>>>> example, if
>>>>>>>>> JDK 9 were the currently supported LTS and trunk was on JDK 11,
>>>>> we'd
>>>>>>>>> either have to get trunk to work with 9 or wait for 11 to resolve
>>>>>>>>> that.
>>>>>>>>>
>>>>>>>>>> On Tue, Mar 20, 2018 at 9:32 AM, Jason Brown <
>>>>> jasedbr...@gmail.com>
>>>>>> wrote:
>>>>>>>>>> Hi all,
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> TL;DR Oracle has started revving the JDK version much faster, and
>>>>> we
>>>>>> need
>>>>>>>>>> an agreed upon plan.
>>>>>>>>>>
>>>>>>>>>> Well, we probably should has this discussion this already by now,
>>>>> but
>>>>>>>>> here
>>>>>>>>>> we are. Oracle announced plans to release updated JDK version
>>>>> every
>>>>>> six
>>>>>>>>>> months, and each new version immediate supercedes the previous in
>>>>> all
>>>>>>>>> ways:
>>>>>>>>>> no updates/security fixes to previous versions is the main thing,
>>>>> and
>>>>>>>>>> previous versions are EOL'd immediately. In addition, Oracle has
>>>>>> planned
>>>>>>>>>> parallel LTS versions that will live for three years, and then
>>>>>> superceded
>>>>>>>>>> by the next LTS; but not immediately EOL'd from what I can tell.
>>>>>> Please
>>>>>>>>> see
>>>>>>>>>> [1, 2] for Oracle's offical comments about this change ([3] was
>>>>>>>>>> particularly useful, imo), [4] and many other postings on the
>>>>>> internet
>>>>>>>>> for
>>>>>>>>>> discussion/commentary.
>>>>>>>>>>
>>>>>>>>>> We have a jira [5] where Robert Stupp did most of the work to get
>>>>> us
>>>>>> onto
>>>>>>>>>> Java 9 (thanks, Robert), but then the announcement of the JDK
>>>>> version
>>>>>>>>>> changes happened last fall after Robert had done much of the work
>>>>> on
>>>>>> the
>>>>>>>>>> ticket.
>>>>>>>>>>
>>>>>>>>>> Here's an initial proposal of how to move forward. I don't suspect
>>>>>> it's
>>>>>>>>>> complete, but a decent place to start a conversation.
>>>>>>>>>>
>>>>>>>>>> 1) receommend OracleJDK over OpenJDK. IIUC from [3], the OpenJDK
>>>>> will
>>>>>>>>>> release every six months, and the OracleJDK will release every
>>>>> three
>>>>>>>>> years.
>>>>>>>>>> Thus, the OracleJDK is the LTS version, and it just comes from a
>>>>>> snapshot
>>>>>>>>>> of one of those OpenJDK builds.
>>>>>>>>>>
>>>>>>>>>> 2) always release cassandra on a LTS version. I don't think we can
>>>>>>>>>> reasonably expect operators to update the JDK every six months, on
>>>>>> time.
>>>>>>>>>> Further, if there are breaking changes to the JDK, we don't want
>>>>> to
>>>>>> have
>>>>>>>>> to
>>>>>>>>>> update established c* versions due to those changes, every six
>>>>>> months.
>>>>>>>>>>
>>>>>>>>>> 3) keep trunk on the lasest jdk version, assumming we release a
>>>>> major
>>>>>>>>>> cassandra version close enough to a LTS release. Currently that
>>>>> seems
>>>>>>>>>> reasonable for cassandra 4.0 to be released with java 11 (18.9
>>>>> LTS)
>>>>>>>>>> support. Perhaps we can evaluate this over time.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Once we agree on a path forward, *it is impreative that we publish
>>>>>> the
>>>>>>>>>> decision to the docs* so we can point contributors and operators
>>>>>> there,
>>>>>>>>>> instead of rehashing the same conversation.
>>>>>>>>>>
>>>>>>>>>> I look forward to a lively discussion. Thanks!
>>>>>>>>>>
>>>>>>>>>> -Jason
>>>>>>>>>>
>>>>>>>>>> [1] http://www.oracle.com/technetwork/java/eol-135779.html
>>>>>>>>>> [2]
>>>>>>>>>> https://blogs.oracle.com/java-platform-group/faster-and-
>>>>>>>>> easier-use-and-redistribution-of-java-se
>>>>>>>>>> [3]
>>>>>>>>>> https://www.oracle.com/java/java9-screencasts.html?bcid=
>>>>>>>>> 5582439790001&playerType=single-social&size=events
>>>>>>>>>> [4]
>>>>>>>>>> http://blog.joda.org/2018/02/java-9-has-six-weeks-to-live.
>>>>>>>>> html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+
>>>>>>>>> StephenColebournesBlog+%28Stephen+Colebourne%27s+blog%29
>>>>>>>>>> [5] https://issues.apache.org/jira/browse/CASSANDRA-9608
>>>>>>>>>
>>>>>>>>> ------------------------------------------------------------
>>>>> ---------
>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>>>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
>>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>> For additional commands, e-mail: dev-h...@cassandra.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> For additional commands, e-mail: dev-h...@cassandra.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
For additional commands, e-mail: dev-h...@cassandra.apache.org

Reply via email to