Igniters, we have a problem.

*TL;DR;*
Ignite may be seriously broken in Java 11. This affects ignite.sh,
Hibernate integration, JTA integration. And we cannot test it before code
freeze due to Java 11 release schedule.

We need to understand whether we shift release, or plan immediate AI 2.8
afterwarвs, or ignore the problem until a number of user compliants appear.

*Long story*
As you may know we already put some efforts on Java 9 support in Ignite
[1]. Specifically, during earlier releases we reworked all code affected by
Java 9 changes and added several "--add-export" and "--add-module" flags to
support some packages which are not accessible by default. We never
implemented any modules in Ignite.

As a result, currently Apache Ignite mostly works fine with Java 9. If node
is started in standalone mode, we add mentioned flags to JVM arguments by
default, and no actions are needed from user side. If node is started in
embedded mode, user has to provide required flags manually [2]. This is
acceptable state for us until module subsystem is integrated somehow with
the product.

But then we decided to perform extensive testing of current master on Java
9/10/11 versions. Thanks to Peter Ivanov, we setup required environment.
During this activity we read more docs about Java 11. We revealed, that in
this release a number of packages we depend on will be removed completely
from JDK as a part of JEP 320 [3]. *JTA *and *Hibernate* integrations will
stop work out of the box. Moreover, "--add-module" flag will stop working,
what may affect ignite.sh.

Things are even worse because Java 11 will be released exactly by our
planned code freeze date, so we cannot even test it appropriately right
now. So we need to revisit out Java 9+ support strategy for the nearest
releases.

*Possible solutions*
1) Relax and move Java 9+ support to AI 2.8 scope
Pros: Java 8 will be supported till January 2019 [4] so we still have some
time. We can plan AI 2.8 to Nov-Dec this year.
Cons: more and more users will try Java 11 (not Java 9 or 10, they will be
hidden from official page) during this time, and without Java 11 testing we
may end up with not-working product.

2) Move AI 2.7 code freeze to the middle of October to have a time to test
and fix big problems with Java 11.
Pros: Java 11 will be released in the end of the next week [5]. We take
some additional time to test us with Java 11, fix what can be fixed, find
and document workaround for things which cannot be fixed.
Cons: AI 2.7 will be released in the end of October.

Another small "cons" for the second approach is that we will have more time
for MVCC stabilization, and improve chances of service grid to be included
into release (from what I heard from Nikolay and Vyacheslav, there is a
good progress for now). But remember that our previous expirience with
things like that is constantly shifting release dates.

Please share your thoughts on what should we do with Java 11.

Vladimir.

[1] https://issues.apache.org/jira/browse/IGNITE-6728
[2] https://issues.apache.org/jira/browse/IGNITE-9288
[3] http://openjdk.java.net/jeps/320
[4] https://www.oracle.com/technetwork/java/javase/eol-135779.html
[5] http://www.java-countdown.xyz/

Reply via email to