Skip to content

GH-1429: Match macOS JNI source selection to Linux - #1430

Open
efegokdemir wants to merge 2 commits into
apache:mainfrom
efegokdemir:efe/arrow-java-macos-json-test
Open

efegokdemir wants to merge 2 commits into
apache:mainfrom
efegokdemir:efe/arrow-java-macos-json-test

Conversation

@efegokdemir

Copy link
Copy Markdown
Contributor

Use the latest Apache Arrow C++ release for non-scheduled macOS JNI builds, matching the Linux jobs. Scheduled builds continue using main, and the macOS job runs TestFileSystemDataset#testBaseJsonRead against its JNI library to catch JSON parser crashes. Related to #1429.

The test was reproduced against the macOS JNI artifact from run 41256646402 and terminated the JVM in ResolveSimdjsonResult. AI assistance was used to prepare this workflow change and regression test.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

Thank you for opening a pull request!

Please label the PR with one or more of:

  • bug-fix
  • chore
  • dependencies
  • documentation
  • enhancement

Also, add the 'breaking-change' label if appropriate.

See CONTRIBUTING.md for details.

Comment thread .github/workflows/rc.yml Outdated
- name: Extract source archive
run: |
tar -xf apache-arrow-java-*.tar.gz --strip-components=1
- name: Download the latest Apache Arrow C++

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step downloads the latest released Arrow C++ tarball (download_cpp.sh defaults to latest-release). That's only the case for push, PR and tag runs, because the nightly schedule still builds against apache/arrow main.
The Linux JNI job above also still checks out main, so the two JNI jobs now compile against different C++ versions.

I would suggest to use the same C++ source for both jobs, and pass latest-rc explicitly, since this is the RC workflow.

As written, a JNI change that needs a newer C++ API could pass on one trigger type and fail on another.

Comment thread .github/workflows/rc.yml
# make brew Java available to CMake
export JAVA_HOME=$(brew --prefix openjdk@17)/libexec/openjdk.jdk/Contents/Home
ci/scripts/jni_macos_build.sh . arrow build jni
- name: Test JSON dataset read

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step assumes the macOS native build includes JSON support, but jni_macos_build.sh exports ARROW_DATASET, ARROW_PARQUET, ARROW_ORC and ARROW_GANDIVA, and not ARROW_JSON.
If the preset or the released C++ doesn't enable it, testBaseJsonRead fails with FileFormat.JSON only after the long native build.

We should double check that JSON is enabled and export ARROW_JSON=ON in the build script.

Also, -Dsurefire.failIfNoSpecifiedTests=false means this step passes silently if the test is renamed or removed. Dropping that flag would make the step fail in that case.

Use latest-rc consistently, explicitly enable macOS JSON support, and
run the dataset regression without suppressing missing-test failures.
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.

2 participants