Skip to content

Java 8 Incompatible Reference Check

Tomo Suzuki edited this page Sep 2, 2020 · 9 revisions

(draft)

This job checks the libraries in a BOM do not have class files with Java 8 incompatible references of java.nio.Buffer classes generated by Java 9 compilers.

Given a BOM, the tool performs the following steps:

  1. Resolve the dependency graph for each artifact in the dependencyManagement section of the BOM
  2. Search for the invalid references embed in the class files in the artifacts in the dependency graphs.
  3. Search for the invalid references embed in the class files in the latest version of the artifacts in the dependency graphs.

If it finds any references to the Java core library that are not present in Java 8 runtime, the job fails; otherwise the job succeeds.

Schedule

This job runs daily through GitHub Actions.

Why not as a pull request check?

Since late August 2020, Linkage Monitor and Linkage Checker are capable of finding the invalid references. As google-cloud-bom repository has Linkage Monitor setup, it should detect the problem as a pull request check. We don't need to setup additional check for the problem.

Actions upon the Job Failure

When the job fails, it notifies the owner of this repository (GoogleCloudPlatform/cloud-opensource-java). Depending on the step that detects failures, we follow-up library owners.

Failure at Step 2

(the protobuf problem has affected the GCP Java client libraries already as of September 2020. Once it's resolved, as Linkage Monitor detects the problem upon pull requests, this case should not happen in future.)

If the job finds any invalid references at Step 2, we take the following actions:

After we upgrade all of the dependencies and publish a new version of the BOM, the job should succeed.

Failure at Step 3

If the job finds any invalid references at Step 3, but not in Step 2, it means the (problematic) latest version is not yet part of the dependency graphs of the libraries in the BOM. We take the following actions:

  • We communicate to the library owner to publish a new version with a fix.
  • We communicate to Google Cloud Java client team to wait until the problem is resolved.

After the latest version of the library fixes the problem, the job should succeed.