Skip to content

Reconfigure some CI builds and add JDK14#6301

Merged
headius merged 6 commits intojruby:masterfrom
headius:jdk14
Jun 28, 2020
Merged

Reconfigure some CI builds and add JDK14#6301
headius merged 6 commits intojruby:masterfrom
headius:jdk14

Conversation

@headius
Copy link
Member

@headius headius commented Jun 26, 2020

This PR makes a few changes to our Travis CI runs:

  • Modify the "int" builds to encourage a full build for code called twice, using threshold=1 and jit.background=false.
  • Remove "fullint" builds from JRuby and MRI suites.
  • Add indy flag to a few JDK11 builds.
  • Duplicate some of the JDK11 builds for JDK14. These builds should be kept up with latest OpenJDK release (so move to 15 this fall).

headius added 2 commits June 26, 2020 16:24
By using threshold=1 with no background jit, this should cause any
code called twice to hit both startup and full interpreter modes.
Given that we test both interpreters in many places and have a
good corpus of compiler/interpreter specs, I believe we can drop
some of the "fullint" runs.
* Remove "fullint" runs in favor of new "int" flags that encourage
  a full build.
* Add invokedynamic to some of the JDK11 builds.
* Duplicate some of the JDK11 builds for JDK14.
@headius headius added this to the JRuby 9.3.0.0 milestone Jun 26, 2020
We will begin transitioning toward using AppCDS rather than the
-Xverify:none flag in the future, but for now this will eliminate
the warning on Java 13 and above.
@headius
Copy link
Member Author

headius commented Jun 27, 2020

Two things failed on JDK14:

  • -Xverify:none and related flags are now deprecated and print a warning at boot, leading to failures in several subprocess tests that received unexpected output. I have patched around this by adding -XX:-PrintWarnings to our --dev flags, but we should start trying to migrate away from using these flags.
  • OpenJDK 13 and higher will now raise BindException (instead of IOException) for EACCES when binding a socket. This caused a failure in test_udp_socket_bind in test/jruby/test_socket.rb. I've fixed this by checking the BindException message, as we do for other IOExceptions.

headius added 2 commits June 27, 2020 15:13
As of JDK13, BindException is now used to represent EACCES in
addition to EADDRINUSE and EADDRNOTAVAIL, so we need to use the
message to differentiate.

See the following OpenJDK change, which altered the exception type
raised for EACCES:

https://bugs.openjdk.java.net/browse/JDK-8220738

This led to a failure in jruby/test_socket.rb:test_udp_socket_bind
due to our assumption that BindException was only used for the
two EADDR* errors.
The message for EPFNOSUPPORT was used for EADDRNOTAVAIL, so I have
fixed both.
@headius headius merged commit 5ce7d14 into jruby:master Jun 28, 2020
@headius headius deleted the jdk14 branch June 28, 2020 02:09
@headius
Copy link
Member Author

headius commented Jun 29, 2020

The two minor patches here (handle BindException based on message and properly assign errno for a couple others) have been cherry-picked to 9.2.12, to improve compatibility with Java 13+.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant