-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Closed
Labels
Description
JDK 16 is actually in "early-access" but is expected to be GA on 2021/03/16 https://openjdk.java.net/projects/jdk/16/
It brings:
- JEP 390: deprecates native types wrapper constructors, so no more
new Long(n)
. Logstash doesn't use these but JRuby seems to use it https://github.com/jruby/jruby/blob/48208dcb1e750013869c6f627350d4a420201adb/core/src/main/java/org/jruby/parser/RubyParser.java#L3864 and I'm not able to view if this could impact Logstash - JEP 386: Alpine Linux support, since the Alpine uses another libc we should try to run against it
- JEP 396: Strongly Encapsulate JDK Internals by Default, we could crash against modules, not directly but for some libraries Logstash use.
- JEP 388: Windows/AArch64 Port, this probably worth an eye
According to JEPs list in JDK 17 https://openjdk.java.net/projects/jdk/17/ we could crash against:
- JEP 411 Deprecate the Security Manager for Removal this means
java.security.AccessController
usage has to be reworked - JEP 403 Strongly Encapsulate JDK Internals internal classes like
sun.misc.Unsafe
are not anymore usable, which could maybe lead us to update some dependencies.
JDK 16 Task list
- run the build with openJDK16 Update CI to run on AdoptOpenJDK16 #13202
- update CI to use JDK16 https://github.com/elastic/infra/pull/31324
- run Logstash package with JDK 16 on Alpine Linux
- use
Dockerfile.alpine
https://gist.github.com/andsel/38972519c366a673f7d4487e7eaa2695 - clone the Fix failing test under JDK16 #13203 branch
https://github.com/andsel/logstash/tree/fix/jdk16_adaptations
- bring the
Dockerfile.alpine
into the local clone - build the image
docker build -t logstash_alpine . -f Dockerfile.alpine
- build the packages
rake artifact:archives
- run a shell in the image mounting the
build/
folder withdocker run --rm -it -v `pwd`/build:/opt/logstash/build logstash_alpine sh
- unpack the previously created Logstash tar.gz package: in the image shell run
cd /opt/logstash/build/
andtar zxf logstash-8.0.0-SNAPSHOT-no-jdk.tar.gz
- run logstash
sh bin/logstash -e "input {stdin{}} output{stdout{codec => rubydebug}}"
- use
-
fixes for the buildFix failing test under JDK16 #13203 -
verify mostly used plugins works with JDK 16
JDK 17 Task list
- run the build with openJDK17 Update JDK matrix to include JDK17: OpenJDK, AdoptiumJDK and Zulu #13307
- update CI to use JDK 17 https://github.com/elastic/infra/pull/32212
- run LS with JDK 17 on Alpine Linux
- remove usage of Security Manager Fixes to build and run Logstah on JDK 17 #13306
- eventually update any dependency that still use the removed
sun.misc.Unsafe
class -
bundle AdomptiumOpenJDK 17 intoPR Update bundled JDK to jdk 17 #133438.0
- verify tier1 and tier2 plugins works with JDK 17
-
configure G1GC flags appropriately for JDK 17 (the default GC of the JVM)Determine best G1GC flags to avoid too much compromise on performance and memory consumption #13378 - update plugins Gradle wrapper version to a JDK 17 compatible (Gradle >= 7)
- Azure EventHub input Fix build script to run with Gradle 7 logstash-plugins/logstash-input-azure_event_hubs#69
- Beats input Fix build script to run with Gradle 7 logstash-plugins/logstash-input-beats#432
- File input Update to Gradle 7.2 logstash-plugins/logstash-input-file#305
- Http Input Fix build script to run with Gradle 7 logstash-plugins/logstash-input-http#145
- Kafka integration (input and output) Fix build script to run with Gradle 7 logstash-plugins/logstash-integration-kafka#104
- TCP input Fix build script to run with Gradle 7 logstash-plugins/logstash-input-tcp#184
- Date filter Fix build script to run with Gradle 7 logstash-plugins/logstash-filter-date#140
- Geoip filter Fix build script to run with Gradle 7 logstash-plugins/logstash-filter-geoip#191
- User agent filter Fix build script to run with Gradle 7 logstash-plugins/logstash-filter-useragent#75
- SNMP input (Tier 2) Fix build script to run with Gradle 7 logstash-plugins/logstash-input-snmp#102
- Dissect filter Fix build script to run with Gradle 7 logstash-plugins/logstash-filter-dissect#78