janusgraph icon indicating copy to clipboard operation
janusgraph copied to clipboard

Option storage.cql.protocol-version is broken

Open unautre opened this issue 1 year ago • 0 comments

The option storage.cql.protocol-version is broken if set to any other value than 0.

The option is defined as an integer here: https://github.com/JanusGraph/janusgraph/blob/master/janusgraph-cql/src/main/java/org/janusgraph/diskstorage/cql/CQLConfigOptions.java#L47

And then mapped to DataStax option "advanced.protocol.version" here: https://github.com/JanusGraph/janusgraph/blob/master/janusgraph-cql/src/main/java/org/janusgraph/diskstorage/cql/builder/CQLProgrammaticConfigurationLoaderBuilder.java#L94

Except this option is supposed to be a string: https://javadoc.io/static/com.datastax.oss/java-driver-core/4.17.0/com/datastax/oss/driver/api/core/config/DefaultDriverOption.html#PROTOCOL_VERSION

When used, the option crashes JanusGraph initialization:

09:08:11 INFO  com.datastax.oss.driver.internal.core.DefaultMavenCoordinates.buildFromResourceAndPrint - DataStax Java driver for Apache Cassandra(R) (com.datastax.oss:java-driver-core) version 4.17.0
09:08:11 INFO  com.datastax.oss.driver.internal.core.cql.CqlPrepareAsyncProcessor.lambda$new$0 - Adding handler to invalidate cached prepared statements on type changes
09:08:11 INFO  com.datastax.oss.driver.internal.core.time.Clock.getInstance - Using native clock for microsecond precision
09:08:11 ERROR org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init> - Could not invoke constructor on class org.janusgraph.graphdb.management.JanusGraphManager (defined by the 'graphManager' setting) with one argument of class Settings
09:08:11 ERROR org.janusgraph.graphdb.server.JanusGraphServer.lambda$main$0 - JanusGraph Server was unable to start and will now begin shutdown
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:97) ~[gremlin-server-3.7.0.jar:3.7.0]
	at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:127) ~[gremlin-server-3.7.0.jar:3.7.0]
	at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:90) ~[gremlin-server-3.7.0.jar:3.7.0]
	at org.janusgraph.graphdb.server.JanusGraphServer.start(JanusGraphServer.java:85) ~[janusgraph-server-1.0.0.jar:?]
	at org.janusgraph.graphdb.server.JanusGraphServer.main(JanusGraphServer.java:53) [janusgraph-server-1.0.0.jar:?]
Caused by: java.lang.reflect.InvocationTargetException
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
	at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
	at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:86) ~[gremlin-server-3.7.0.jar:3.7.0]
	... 4 more
Caused by: java.lang.IllegalArgumentException: Could not instantiate implementation: org.janusgraph.diskstorage.cql.CQLStoreManager
	at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:79) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:548) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:509) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBuilder.java:64) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.core.JanusGraphFactory.lambda$open$0(JanusGraphFactory.java:165) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.graphdb.management.JanusGraphManager.openGraph(JanusGraphManager.java:239) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:165) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:115) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.graphdb.management.JanusGraphManager.lambda$new$0(JanusGraphManager.java:73) ~[janusgraph-core-1.0.0.jar:?]
	at java.util.LinkedHashMap.forEach(Unknown Source) ~[?:?]
	at org.janusgraph.graphdb.management.JanusGraphManager.<init>(JanusGraphManager.java:72) ~[janusgraph-core-1.0.0.jar:?]
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
	at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
	at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:86) ~[gremlin-server-3.7.0.jar:3.7.0]
	... 4 more
Caused by: java.lang.reflect.InvocationTargetException
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
	at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
	at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:73) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:548) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:509) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBuilder.java:64) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.core.JanusGraphFactory.lambda$open$0(JanusGraphFactory.java:165) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.graphdb.management.JanusGraphManager.openGraph(JanusGraphManager.java:239) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:165) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:115) ~[janusgraph-core-1.0.0.jar:?]
	at org.janusgraph.graphdb.management.JanusGraphManager.lambda$new$0(JanusGraphManager.java:73) ~[janusgraph-core-1.0.0.jar:?]
	at java.util.LinkedHashMap.forEach(Unknown Source) ~[?:?]
	at org.janusgraph.graphdb.management.JanusGraphManager.<init>(JanusGraphManager.java:72) ~[janusgraph-core-1.0.0.jar:?]
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
	at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
	at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:86) ~[gremlin-server-3.7.0.jar:3.7.0]
	... 4 more
Caused by: java.lang.IllegalArgumentException: Unknown protocol version name: 3
	at com.datastax.oss.driver.internal.core.DefaultProtocolVersionRegistry.fromName(DefaultProtocolVersionRegistry.java:81) ~[java-driver-core-4.17.0.jar:?]
	at com.datastax.oss.driver.internal.core.channel.ChannelFactory.<init>(ChannelFactory.java:114) ~[java-driver-core-4.17.0.jar:?]
	at com.datastax.oss.driver.internal.core.context.DefaultDriverContext.buildChannelFactory(DefaultDriverContext.java:488) ~[java-driver-core-4.17.0.jar:?]
	at com.datastax.oss.driver.internal.core.util.concurrent.LazyReference.get(LazyReference.java:55) ~[java-driver-core-4.17.0.jar:?]
	at com.datastax.oss.driver.internal.core.context.DefaultDriverContext.getChannelFactory(DefaultDriverContext.java:869) ~[java-driver-core-4.17.0.jar:?]
	at com.datastax.oss.driver.internal.core.control.ControlConnection$SingleThreaded.connect(ControlConnection.java:362) ~[java-driver-core-4.17.0.jar:?]
	at com.datastax.oss.driver.internal.core.control.ControlConnection$SingleThreaded.init(ControlConnection.java:303) ~[java-driver-core-4.17.0.jar:?]
	at com.datastax.oss.driver.internal.core.control.ControlConnection$SingleThreaded.access$1100(ControlConnection.java:243) ~[java-driver-core-4.17.0.jar:?]
	at com.datastax.oss.driver.internal.core.control.ControlConnection.lambda$init$0(ControlConnection.java:122) ~[java-driver-core-4.17.0.jar:?]
	at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) ~[netty-common-4.1.100.Final.jar:4.1.100.Final]
	at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106) ~[netty-common-4.1.100.Final.jar:4.1.100.Final]
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[netty-common-4.1.100.Final.jar:4.1.100.Final]
	at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54) ~[netty-transport-4.1.100.Final.jar:4.1.100.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.100.Final.jar:4.1.100.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.100.Final.jar:4.1.100.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.100.Final.jar:4.1.100.Final]
	at java.lang.Thread.run(Unknown Source) ~[?:?]

This is using JanusGraph docker image 1.0.0, with the CQL backend.

unautre avatar Jul 25 '24 09:07 unautre