Skip to content

Conversation

@milenkovicm
Copy link
Contributor

What's Changed

Arrow C JNI code used class names which are not according to specification, making code unusable in latest graalvm 25.
This PR changes class names according to JNI specification. More details at #866

Closes #866

@milenkovicm
Copy link
Contributor Author

There are quite few git actions failing but it looks like consistent with other PRs,

running locally all tests are ok

➜  c git:(fix_866_jni_class_names) ✗ mvn -Darrow.c.jni.dist.dir=/Users/marko/git/arrow-java/java-dist/lib -Parrow-c-data clean test
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Detecting the operating system and CPU architecture
[INFO] ------------------------------------------------------------------------
[INFO] os.detected.name: osx
[INFO] os.detected.arch: aarch_64
[INFO] os.detected.bitness: 64
[INFO] os.detected.version: 26.0
[INFO] os.detected.version.major: 26
[INFO] os.detected.version.minor: 0
[INFO] os.detected.classifier: osx-aarch_64
[INFO] 
[INFO] -------------------< org.apache.arrow:arrow-c-data >--------------------
[INFO] Building Arrow Java C Data Interface 19.0.0-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- clean:3.4.1:clean (default-clean) @ arrow-c-data ---
[INFO] Deleting /Users/marko/git/arrow-java/c/target
[INFO] 
[INFO] --- enforcer:3.5.0:enforce (enforce-maven-version) @ arrow-c-data ---
[INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireMavenVersion passed
[INFO] 
[INFO] --- enforcer:3.5.0:enforce (enforce-java-version) @ arrow-c-data ---
[INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion passed
[INFO] 
[INFO] --- checkstyle:3.6.0:check (validate) @ arrow-c-data ---
[INFO] Loaded from the build cache, saving 0.596s
[INFO] 
[INFO] --- git-commit-id:4.9.10:revision (for-jars) @ arrow-c-data ---
[INFO] 
[INFO] --- remote-resources:3.3.0:process (process-resource-bundles) @ arrow-c-data ---
[INFO] Preparing remote bundle org.apache.apache.resources:apache-jar-resource-bundle:1.7
[INFO] Copying 3 resources from 1 bundle.
[INFO] 
[INFO] --- resources:3.3.1:resources (default-resources) @ arrow-c-data ---
[INFO] Copying 1 resource from ../java-dist/lib to target/classes
[INFO] Copying 3 resources from target/maven-shared-archive-resources to target/classes
[INFO] 
[INFO] --- compiler:3.14.0:compile (default-compile) @ arrow-c-data ---
[WARNING] ****************************************************************************************************************************************************
[WARNING] * Required filename-based automodules detected: [flatbuffers-java-25.2.10.jar]. Please don't publish this project to a public artifact repository! *
[WARNING] ****************************************************************************************************************************************************
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 25 source files with javac [forked debug release 11 module-path] to target/classes
[INFO] 
[INFO] --- resources:3.3.1:testResources (default-testResources) @ arrow-c-data ---
[INFO] skip non existing resourceDirectory /Users/marko/git/arrow-java/c/src/test/resources
[INFO] Copying 3 resources from target/maven-shared-archive-resources to target/test-classes
[INFO] 
[INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ arrow-c-data ---
[INFO] Recompiling the module because of changed dependency.
[INFO] Compiling 9 source files with javac [forked debug release 11] to target/test-classes
[INFO] 
[INFO] --- surefire:3.5.2:test (default-test) @ arrow-c-data ---
[WARNING] Could not extract goal execution properties.
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
WARNING: Unknown module: org.apache.arrow.memory.core specified to --add-opens
WARNING: Unknown module: org.apache.arrow.memory.core specified to --add-opens
[INFO] Running org.apache.arrow.c.NativeUtilTest
[INFO] Running org.apache.arrow.c.FormatTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.025 s -- in org.apache.arrow.c.FormatTest
19:55:06.129 [main] INFO org.apache.arrow.memory.BaseAllocator -- Debug mode disabled. Enable with the VM option -Darrow.memory.debug.allocator=true.
19:55:06.131 [main] INFO org.apache.arrow.memory.DefaultAllocationManagerOption -- allocation manager type not specified, using netty as the default type
19:55:06.132 [main] INFO org.apache.arrow.memory.CheckAllocator -- Using DefaultAllocationManager at memory-unsafe/19.0.0-SNAPSHOT/arrow-memory-unsafe-19.0.0-SNAPSHOT.jar!/org/apache/arrow/memory/unsafe/DefaultAllocationManagerFactory.class
19:55:06.133 [main] DEBUG org.apache.arrow.memory.util.MemoryUtil -- Constructor for direct buffer found and made accessible
19:55:06.134 [main] DEBUG org.apache.arrow.memory.util.MemoryUtil -- direct buffer constructor: available
19:55:06.135 [main] DEBUG org.apache.arrow.memory.rounding.DefaultRoundingPolicy -- -Dorg.apache.memory.allocator.pageSize: 8192
19:55:06.135 [main] DEBUG org.apache.arrow.memory.rounding.DefaultRoundingPolicy -- -Dorg.apache.memory.allocator.maxOrder: 11
[INFO] Running org.apache.arrow.c.MetadataTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.043 s -- in org.apache.arrow.c.NativeUtilTest
[INFO] Running org.apache.arrow.c.StreamTest
19:55:06.164 [main] INFO org.apache.arrow.memory.BaseAllocator -- Debug mode disabled. Enable with the VM option -Darrow.memory.debug.allocator=true.
19:55:06.167 [main] INFO org.apache.arrow.memory.DefaultAllocationManagerOption -- allocation manager type not specified, using netty as the default type
19:55:06.167 [main] INFO org.apache.arrow.memory.CheckAllocator -- Using DefaultAllocationManager at memory-unsafe/19.0.0-SNAPSHOT/arrow-memory-unsafe-19.0.0-SNAPSHOT.jar!/org/apache/arrow/memory/unsafe/DefaultAllocationManagerFactory.class
19:55:06.169 [main] DEBUG org.apache.arrow.memory.util.MemoryUtil -- Constructor for direct buffer found and made accessible
19:55:06.170 [main] DEBUG org.apache.arrow.memory.util.MemoryUtil -- direct buffer constructor: available
19:55:06.170 [main] DEBUG org.apache.arrow.memory.rounding.DefaultRoundingPolicy -- -Dorg.apache.memory.allocator.pageSize: 8192
19:55:06.170 [main] DEBUG org.apache.arrow.memory.rounding.DefaultRoundingPolicy -- -Dorg.apache.memory.allocator.maxOrder: 11
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.035 s -- in org.apache.arrow.c.MetadataTest
[INFO] Running org.apache.arrow.c.FlagsTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 s -- in org.apache.arrow.c.FlagsTest
[INFO] Running org.apache.arrow.c.RoundtripTest
19:55:06.626 [main] DEBUG org.apache.arrow.vector.complex.AbstractContainerVector -- Field [boolean] mutated to [BitVector] 
19:55:06.626 [main] DEBUG org.apache.arrow.vector.complex.AbstractContainerVector -- Field [varchar] mutated to [VarCharVector] 
19:55:06.627 [main] DEBUG org.apache.arrow.vector.complex.AbstractContainerVector -- Field [boolean] mutated to [BitVector] 
19:55:06.627 [main] DEBUG org.apache.arrow.vector.complex.AbstractContainerVector -- Field [varchar] mutated to [VarCharVector] 
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.468 s -- in org.apache.arrow.c.StreamTest
[INFO] Running org.apache.arrow.c.DictionaryTest
19:55:06.640 [main] DEBUG org.apache.arrow.vector.ipc.ArrowWriter -- RecordBatch at 152, metadata: 144, body: 32
19:55:06.640 [main] DEBUG org.apache.arrow.vector.ipc.ArrowWriter -- RecordBatch at 328, metadata: 144, body: 24
19:55:06.640 [main] DEBUG org.apache.arrow.vector.ipc.ArrowWriter -- RecordBatch at 496, metadata: 144, body: 32
19:55:06.641 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.641 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.641 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 144
19:55:06.641 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.641 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.641 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 136
19:55:06.641 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 32
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 136
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 24
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 136
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 32
19:55:06.642 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
19:55:06.643 [main] DEBUG org.apache.arrow.vector.ipc.ReadChannel -- Reading buffer with size: 4
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s -- in org.apache.arrow.c.DictionaryTest
[INFO] Running org.apache.arrow.c.ArrowArrayUtilityTest
[INFO] Tests run: 62, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.442 s -- in org.apache.arrow.c.RoundtripTest
[INFO] Running org.apache.arrow.c.ExceptionTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 s -- in org.apache.arrow.c.ArrowArrayUtilityTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.020 s -- in org.apache.arrow.c.ExceptionTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 96, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.402 s
[INFO] Finished at: 2025-10-02T20:55:06+01:00
[INFO] ------------------------------------------------------------------------
[INFO] 11 goals, 10 executed, 1 from cache
[INFO] Build cache (/Users/marko/.m2/.develocity/build-cache/v1) removing files not accessed on or after Thu Sep 25 20:55:06 IST 2025.
[INFO] Build cache (/Users/marko/.m2/.develocity/build-cache/v1) cleanup deleted 0 files/directories.
[INFO] Build cache (/Users/marko/.m2/.develocity/build-cache/v1) cleaned up in 0.001 secs.

Copy link
Member

@lidavidm lidavidm left a comment

Choose a reason for hiding this comment

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

Thanks! I guess HotSpot doesn't care but GraalVM does?

@lidavidm lidavidm merged commit d529557 into apache:main Oct 3, 2025
19 of 24 checks passed
@milenkovicm
Copy link
Contributor Author

GraalVM only complains when code is running as part of native-image, if you run it as java it will not complain, everything works as expected. It was one deep rabbit hole finding what the issue was.

thanks for merging @lidavidm

@lidavidm
Copy link
Member

lidavidm commented Oct 3, 2025

Thanks for figuring it out! I will try to update the docs when I get a chance...

@milenkovicm
Copy link
Contributor Author

one last question, whats the time frame for 19 release ?

@lidavidm
Copy link
Member

lidavidm commented Oct 3, 2025

CC @jbonofre, we are trying to do a release but as you saw we need to clean up our CI :)

@jbonofre
Copy link
Member

jbonofre commented Oct 3, 2025

I'm on it: clean ci and release when green.

@kou
Copy link
Member

kou commented Oct 4, 2025

I need to work on apache/arrow#47632 for this...

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.

Issue with arrow-c JNI and GraalVM 25

4 participants