[ 
https://issues.apache.org/jira/browse/TINKERPOP-3092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17863360#comment-17863360
 ] 

Ken Hu commented on TINKERPOP-3092:
-----------------------------------

For now you'll have to depend on JVM flags. I believe the only way we can 
support this without relying on the flags is to implement Modules. See 
TINKERPOP-3019 and 
[https://lists.apache.org/thread/vkvqcxn6t2lsgpfym7v3g3qvksrh3cwc] for 
discussion around that topic.

> Gremlin Standard Test Suite fails on Java 9+ with a module system error
> -----------------------------------------------------------------------
>
>                 Key: TINKERPOP-3092
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3092
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: test-suite
>            Reporter: Martin Häusler
>            Priority: Major
>
> I'm taking a second shot at upgrading my graph implementation from Java 8 to 
> the current stable Java version (21). However, a lot (922) of TinkerPop tests 
> which previously succeeded fail on the new Java version, because Kryo 
> attempts to access a private field in AtomicLong which should have been left 
> alone.
> The stack trace is attached below; apart from the specific test case, the 
> error is identical for all of them). Please also note that this stack trace 
> is entirely coming from the "org.apache.tinkerpop" namespace, there's not a 
> single class from my implementation in there.
>  
> Any advice on what I could do? Do I really have to resort to JVM flags to 
> open the module just to make the test suite run? Or am I missing something 
> else?
>  
> {code:java}
> java.lang.IllegalArgumentException: Unable to create serializer 
> "org.apache.tinkerpop.shaded.kryo.serializers.FieldSerializer" for class: 
> java.util.concurrent.atomic.AtomicLong      at 
> org.apache.tinkerpop.shaded.kryo.factories.ReflectionSerializerFactory.makeSerializer(ReflectionSerializerFactory.java:67)
>    at 
> org.apache.tinkerpop.shaded.kryo.factories.ReflectionSerializerFactory.makeSerializer(ReflectionSerializerFactory.java:45)
>    at 
> org.apache.tinkerpop.shaded.kryo.Kryo.newDefaultSerializer(Kryo.java:380)    
> at org.apache.tinkerpop.shaded.kryo.Kryo.getDefaultSerializer(Kryo.java:364)  
>   at 
> org.apache.tinkerpop.gremlin.structure.io.gryo.GryoTypeReg.registerWith(GryoTypeReg.java:122)
>         at 
> org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper.createMapper(GryoMapper.java:101)
>   at 
> org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper.createMapper(GryoMapper.java:75)
>    at 
> org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader.<init>(GryoReader.java:71)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader.<init>(GryoReader.java:64)
>  at 
> org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader$Builder.create(GryoReader.java:302)
>         at 
> org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep.constructReader(IoStep.java:156)
>        at 
> org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep.read(IoStep.java:132)
>   at 
> org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep.processNextStart(IoStep.java:110)
>       at 
> org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:150)
>  at 
> org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:55)
>  at 
> org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep.processNextStart(FilterStep.java:40)
>    at 
> org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:135)
>     at 
> org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:40)
>      at 
> org.apache.tinkerpop.gremlin.process.traversal.Traversal.iterate(Traversal.java:210)
>  at 
> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal.iterate(GraphTraversal.java:3327)
>     at 
> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal$Admin.iterate(GraphTraversal.java:202)
>        at 
> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.iterate(DefaultGraphTraversal.java:48)
>         at 
> org.apache.tinkerpop.gremlin.AbstractGraphProvider.readIntoGraph(AbstractGraphProvider.java:153)
>      at 
> org.apache.tinkerpop.gremlin.AbstractGraphProvider.loadGraphData(AbstractGraphProvider.java:93)
>       at 
> org.apache.tinkerpop.gremlin.GraphManager$ManagedGraphProvider.loadGraphData(GraphManager.java:168)
>   at 
> org.apache.tinkerpop.gremlin.AbstractGremlinTest.setup(AbstractGremlinTest.java:116)
>  at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:580)   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>  at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>    at 
> org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
>     at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
>        at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)  
> at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)  at 
> org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>  at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)        at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>    at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>     at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)  at 
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)      at 
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)    at 
> org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)      at 
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)     at 
> org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at 
> org.junit.runners.ParentRunner.run(ParentRunner.java:413)    at 
> org.junit.runners.Suite.runChild(Suite.java:128)     at 
> org.apache.tinkerpop.gremlin.AbstractGremlinSuite.runChild(AbstractGremlinSuite.java:226)
>     at 
> org.apache.tinkerpop.gremlin.AbstractGremlinSuite.runChild(AbstractGremlinSuite.java:51)
>      at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)  at 
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)      at 
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)    at 
> org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)      at 
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)     at 
> org.apache.tinkerpop.gremlin.AbstractGremlinSuite$1.evaluate(AbstractGremlinSuite.java:235)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at 
> org.junit.runners.ParentRunner.run(ParentRunner.java:413)    at 
> org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112)
>      at 
> org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
>    at 
> org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
>    at 
> org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60)
>         at 
> org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52)
>       at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:580)   at 
> org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
>  at 
> org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
>  at 
> org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
>  at 
> org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
>   at jdk.proxy2/jdk.proxy2.$Proxy5.processTestClass(Unknown Source)       at 
> org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
>    at 
> org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
>     at 
> org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
>  at 
> org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
>   at 
> org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
>         at 
> org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:119)
>         at 
> org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:66)
>  at 
> worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
>      at 
> worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)Caused
>  by: java.lang.reflect.InvocationTargetException      at 
> java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
>   at 
> java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
>   at 
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)    
> at 
> org.apache.tinkerpop.shaded.kryo.factories.ReflectionSerializerFactory.makeSerializer(ReflectionSerializerFactory.java:54)
>    ... 78 moreCaused by: java.lang.reflect.InaccessibleObjectException: 
> Unable to make field private volatile long 
> java.util.concurrent.atomic.AtomicLong.value accessible: module java.base 
> does not "opens java.util.concurrent.atomic" to unnamed module @82de64a       
> at 
> java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391)
>      at 
> java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367)
>         at 
> java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315)
>         at 
> java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183)      
> at java.base/java.lang.reflect.Field.setAccessible(Field.java:177)      at 
> org.apache.tinkerpop.shaded.kryo.serializers.FieldSerializer.buildValidFields(FieldSerializer.java:306)
>       at 
> org.apache.tinkerpop.shaded.kryo.serializers.FieldSerializer.rebuildCachedFields(FieldSerializer.java:239)
>    at 
> org.apache.tinkerpop.shaded.kryo.serializers.FieldSerializer.rebuildCachedFields(FieldSerializer.java:182)
>    at 
> org.apache.tinkerpop.shaded.kryo.serializers.FieldSerializer.<init>(FieldSerializer.java:155)
>         at 
> java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
>   ... 81 more
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to