[Bug 1766998] Re: [SRU] ceph: replace -source/-target 1.8 with --release 7
Launchpad Bug Tracker
1766998 at bugs.launchpad.net
Tue May 15 20:03:15 UTC 2018
This bug was fixed in the package ceph - 12.2.4-0ubuntu1.1
---------------
ceph (12.2.4-0ubuntu1.1) bionic; urgency=medium
* d/p/update-java-source-target-flags.patch: Use --release instead
of -source/-target and set release to 7 as that is the minimum
required for OpenJDK 11 (LP: #1766998).
* d/p/replace-javah-usage.patch: call -h during compilation time to
generate native header files and remove the javah call as the binary
is no longer part of openjdk-10 - javah has been deprecated since
openjdk-9 (LP: #1766995).
-- Tiago Stürmer Daitx <tiago.daitx at ubuntu.com> Wed, 25 Apr 2018
01:45:34 +0000
** Changed in: ceph (Ubuntu)
Status: New => Fix Released
--
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to ceph in Ubuntu.
https://bugs.launchpad.net/bugs/1766998
Title:
[SRU] ceph: replace -source/-target 1.8 with --release 7
Status in ceph package in Ubuntu:
Fix Released
Status in ceph source package in Bionic:
Fix Committed
Bug description:
[Impact]
The fix for bug #1756854 updated the -source and -target from 1.5 to 1.8 to allow the build to succeed with openjdk-9 as well as to keep compatibility with openjdk-11.
That change missed the fact that the right way to set the target jdk
level in openjdk-9 is to actually use the --release flag, introduced
by JEP-247 [1]. By using the --release flag the right bootclasspath is
also set, which prevents API compatibility problems when running the
compiled jar/classes with older jdks (including the targeted one)
[2,3].
Also, while JEP-182 [4] indicated that OpenJDK-11 would only allow a
minimum source/target of 1.8, that later changed due to introduction
of a 6-month release cycle, which moved the minimum source/target to
1.6 for openjdk-10 [5] and to 1.7 for openjdk-11 [6].
Thus the proposal is to move from "-source 1.8 -target 1.8" to "--
release 7" in order to accommodate both changes.
Currently ceph does not seem to make use any of the known APIs that
can cause such failure when run with openjdk-8, but there is a risk of
openjdk-11 introducing additional changes that could change that.
[Test Case]
* There is no known use case for it yet: of the known API incompatibilities none seems to be used by cephs-java, but that only goes as far as openjdk-9 and openjdk-10.
In order to check the binary compatibility of the generated jar and
jni:
$ apt-get install libcephfs-java ceph-test \
openjdk-11-jre-headless # or openjdk-8-jre-headless
# replace with java-8-openjdk-amd64 for openjdk-8
$ /usr/lib/jvm/java-11-openjdk-amd64/bin/java \
-DCEPH_CONF_FILE=/etc/ceph/ceph.conf \
-Djava.library.path=/usr/lib/jni/ \
-cp /usr/share/java/junit4.jar:/usr/share/java/libcephfs.jar:/usr/share/java/libcephfs-test.jar \
org.junit.runner.JUnitCore \
com.ceph.fs.CephAllTests
It should report back:
FAILURES!!!
Tests run: 27, Failures: 4
The 4 failures are:
1) test_double_mount(com.ceph.fs.CephDoubleMountTest)
java.lang.Exception: Unexpected exception, expected<com.ceph.fs.CephAlreadyMountedException> but was<java.io.FileNotFoundException>
2) test_CephMountCreate(com.ceph.fs.CephMountCreateTest)
java.io.FileNotFoundException:
3) com.ceph.fs.CephMountTest
java.io.FileNotFoundException:
4) com.ceph.fs.CephMountTest
java.lang.NullPointerException: @path is null
which is caused by the fact that ceph itself is not running nor
mounted.
The test case results should be the exact same with and without the
patch applied, for both openjdk-8 and openjdk-11. This should indicate
that the running tests are not being affected by the flag change.
[Regression Potential]
* There is no known regression; these changes should actually improve ceph compatibility with openjdk-8 code by using --release to set the right bootclasspath.
[Other Info]
* openjdk-8 is being kept in the universe pocket for bionic and will be supported until xenial EOL (as it is in xenial's release pocket), thus it is important to guarantee that our packages can also be run and build with openjdk-8.
[References]
[1] http://openjdk.java.net/jeps/247
[2] https://github.com/plasma-umass/doppio/issues/497#issuecomment-353394008
[3] https://bugs.debian.org/895616
[4] http://openjdk.java.net/jeps/182
[5] https://bugs.openjdk.java.net/browse/JDK-8028563
[6] https://bugs.openjdk.java.net/browse/JDK-8173605
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ceph/+bug/1766998/+subscriptions
More information about the Ubuntu-openstack-bugs
mailing list