On Wed, Mar 21, 2018 at 9:00 AM, Josh McKenzie <jmcken...@apache.org> wrote:
>> Wasn't portability supposed to be one of the
>> big selling points of Java?
> Historically, yes, but their change in release cadence and support
> structure is something they're pushing, not us. We have to figure out
> how to make the best of a change that is, at best, orthogonal to our
> interests as a project.
>
> Maintaining portability within a few releases of the JDK for each
> supported version of C* is a non-trivial amount of work with a 6 month
> refresh timer on it.

Do we know this though?  More frequent releases should also mean that
each new release has accumulated less change (the typical trade-off).
Also, these JDKs are supposed to be backward compatible, if this isn't
the case because (for example) we are (ab)using private interfaces,
that's probably worth looking at anyway.

> On Wed, Mar 21, 2018 at 9:49 AM, Eric Evans <eev...@wikimedia.org> wrote:
>> On Wed, Mar 21, 2018 at 8: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.
>>>
>>
>> Personally, I don't like the idea of vendoring like this at all.  Wasn't
>> portability supposed to be one of the big selling points of Java?  Wouldn't
>> our efforts be better directed at being portable to within a few releases
>> of the JDK, than to tightly couple it to once specific version?
>>
>>
>>> 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
>>>
>>>
>>
>>
>> --
>> Eric Evans
>> eev...@wikimedia.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
> For additional commands, e-mail: dev-h...@cassandra.apache.org
>



-- 
Eric Evans
john.eric.ev...@gmail.com

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

Reply via email to