Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reconfigure some CI builds and add JDK14 #6301

Merged
merged 6 commits into from Jun 28, 2020
Merged

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).

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.

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.

None yet

1 participant