docker-composejanusgraphamazon-keyspaces

Run JanusGraph with Amazon Keyspaces Storage Backend


Is it possible to run a JanusGraph Docker Container with an AWS Keyspace as storage backend?

I tried to configure the Keyspace using Janus Graphs cassandra-es template. If I run the below docker-compose.yml JanusGraph logs exceptions and all queries return a ScriptEvaluationError: gremlin-groovy is not an available GremlinScriptEngine'. Maybe the connection to the Keyspace cannot be established?

version: "3"

services:
  janusgraph:
    image: janusgraph/janusgraph:latest
    container_name: jce-janusgraph
    environment:
      JANUS_PROPS_TEMPLATE: cassandra-es
      janusgraph.storage.backend: cql
      janusgraph.storage.hostname: cassandra.eu-central-1.amazonaws.com
      janusgraph.storage.password: <password>
      janusgraph.storage.username: <username>
      janusgraph.storage.cql.keyspace: janusgraphtest
      # janusgraph.storage.cql.ssl.enabled: 'true'
      janusgraph.index.search.hostname: jce-elastic
    ports:
      - "8182:8182"
    networks:
      - jce-network
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
    container_name: jce-elastic
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "http.host=0.0.0.0"
      - "network.host=0.0.0.0"
      - "transport.host=127.0.0.1"
      - "cluster.name=docker-cluster"
      - "xpack.security.enabled=false"
      - "discovery.zen.minimum_master_nodes=1"
    ports:
      - "9200:9200"
    networks:
      - jce-network
networks:
  jce-network:
volumes:
  janusgraph-default-data:

Username and password for the aws keyspace are created according to the docs

Below are the startup logs (verbose)

jce-janusgraph   | waiting for storage...
jce-janusgraph   | waiting for storage...
jce-janusgraph   | waiting for storage...
jce-janusgraph   | SLF4J: Class path contains multiple SLF4J bindings.
jce-janusgraph   | SLF4J: Found binding in [jar:file:/opt/janusgraph/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
jce-janusgraph   | SLF4J: Found binding in [jar:file:/opt/janusgraph/lib/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
jce-janusgraph   | SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
jce-janusgraph   | SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
jce-janusgraph   | 2    [main] INFO  org.apache.tinkerpop.gremlin.server.GremlinServer  - 3.4.6
jce-janusgraph   |          \,,,/
jce-janusgraph   |          (o o)
jce-janusgraph   | -----oOOo-(3)-oOOo-----
jce-janusgraph   |
jce-janusgraph   | 145  [main] INFO  org.apache.tinkerpop.gremlin.server.GremlinServer  - Configuring Gremlin Server from /etc/opt/janusgraph/gremlin-server.yaml
jce-janusgraph   | 208  [main] INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager  - Configured Metrics ConsoleReporter configured with report interval=180000ms
jce-janusgraph   | 211  [main] INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager  - Configured Metrics CsvReporter configured with report interval=180000ms to fileName=/tmp/gremlin-server-metrics.csv
jce-janusgraph   | 261  [main] INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager  - Configured Metrics JmxReporter configured with domain= and agentId=
jce-janusgraph   | 264  [main] INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager  - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics
jce-janusgraph   | 670  [main] INFO  com.datastax.driver.core  - DataStax Java driver 3.8.0 for Apache Cassandra
jce-janusgraph   | 690  [main] INFO  com.datastax.driver.core.GuavaCompatibility  - Detected Guava < 19 in the classpath, using legacy compatibility layer
jce-janusgraph   | 700  [main] WARN  org.apache.tinkerpop.gremlin.server.GremlinServer  - Graph [graph] configured at [/etc/opt/janusgraph/janusgraph.properties] could not be instantiated and will not be available in Gremlin Server.  GraphFactory message: GraphFactory could not instantiate this Graph implementation [class org.janusgraph.core.JanusGraphFactory]
jce-janusgraph   | java.lang.RuntimeException: GraphFactory could not instantiate this Graph implementation [class org.janusgraph.core.JanusGraphFactory]
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:81)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:69)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:103)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.lambda$new$0(DefaultGraphManager.java:57)
jce-janusgraph   |      at java.util.LinkedHashMap$LinkedEntrySet.forEach(LinkedHashMap.java:671)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.<init>(DefaultGraphManager.java:55)
jce-janusgraph   |      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
jce-janusgraph   |      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
jce-janusgraph   |      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
jce-janusgraph   |      at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:80)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:122)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:86)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.GremlinServer.main(GremlinServer.java:345)
jce-janusgraph   | Caused by: java.lang.reflect.InvocationTargetException
jce-janusgraph   |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jce-janusgraph   |      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
jce-janusgraph   |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
jce-janusgraph   |      at java.lang.reflect.Method.invoke(Method.java:498)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:77)
jce-janusgraph   |      ... 13 more
jce-janusgraph   | Caused by: java.lang.IllegalArgumentException: Could not instantiate implementation: org.janusgraph.diskstorage.cql.CQLStoreManager
jce-janusgraph   |      at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:64)
jce-janusgraph   |      at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:440)
jce-janusgraph   |      at org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:411)
jce-janusgraph   |      at org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBuilder.java:50)
jce-janusgraph   |      at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:161)
jce-janusgraph   |      at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:132)
jce-janusgraph   |      at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:112)
jce-janusgraph   |      ... 18 more
jce-janusgraph   | Caused by: java.lang.reflect.InvocationTargetException
jce-janusgraph   |      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
jce-janusgraph   |      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
jce-janusgraph   |      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
jce-janusgraph   |      at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
jce-janusgraph   |      at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:58)
jce-janusgraph   |      ... 24 more
jce-janusgraph   | Caused by: java.lang.IllegalArgumentException: Invalid configuration value for [root.storage.cql.ssl.truststore.location]:
jce-janusgraph   |      at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
jce-janusgraph   |      at org.janusgraph.diskstorage.configuration.ConfigOption.verify(ConfigOption.java:240)
jce-janusgraph   |      at org.janusgraph.diskstorage.configuration.ConfigOption.get(ConfigOption.java:232)
jce-janusgraph   |      at org.janusgraph.diskstorage.configuration.BasicConfiguration.get(BasicConfiguration.java:69)
jce-janusgraph   |      at org.janusgraph.diskstorage.configuration.Configuration.get(Configuration.java:35)
jce-janusgraph   |      at org.janusgraph.diskstorage.cql.CQLStoreManager.initializeCluster(CQLStoreManager.java:277)
jce-janusgraph   |      at org.janusgraph.diskstorage.cql.CQLStoreManager.<init>(CQLStoreManager.java:181)
jce-janusgraph   |      ... 29 more
jce-janusgraph   | 703  [main] INFO  org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor  - Initialized Gremlin thread pool.  Threads in pool named with pattern gremlin-*
jce-janusgraph   | 775  [main] INFO  org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor  - Initialized GremlinExecutor and preparing GremlinScriptEngines instances.
jce-janusgraph   | 3661 [gremlin-server-exec-1] ERROR org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager  - Could not create GremlinScriptEngine for gremlin-groovy
jce-janusgraph   | java.lang.IllegalStateException: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.lambda$createGremlinScriptEngine$16(DefaultGremlinScriptEngineManager.java:464)
jce-janusgraph   |      at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
jce-janusgraph   |      at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
jce-janusgraph   |      at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
jce-janusgraph   |      at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
jce-janusgraph   |      at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:272)
jce-janusgraph   |      at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
jce-janusgraph   |      at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
jce-janusgraph   |      at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
jce-janusgraph   |      at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
jce-janusgraph   |      at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
jce-janusgraph   |      at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
jce-janusgraph   |      at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.createGremlinScriptEngine(DefaultGremlinScriptEngineManager.java:450)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.getEngineByName(DefaultGremlinScriptEngineManager.java:219)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.lambda$getEngineByName$0(CachedGremlinScriptEngineManager.java:57)
jce-janusgraph   |      at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.getEngineByName(CachedGremlinScriptEngineManager.java:57)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:267)
jce-janusgraph   |      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
jce-janusgraph   |      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
jce-janusgraph   |      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
jce-janusgraph   |      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
jce-janusgraph   |      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
jce-janusgraph   |      at java.lang.Thread.run(Thread.java:748)
jce-janusgraph   | Caused by: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:378)
jce-janusgraph   |      at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.lambda$createGremlinScriptEngine$16(DefaultGremlinScriptEngineManager.java:460)
jce-janusgraph   |      ... 24 more
jce-janusgraph   | Caused by: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:697)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:376)
jce-janusgraph   |      ... 26 more
jce-janusgraph   | Caused by: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
jce-janusgraph   |      at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:65)
jce-janusgraph   |      at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:51)
jce-janusgraph   |      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:309)
jce-janusgraph   |      at Script1.run(Script1.groovy:30)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:674)
jce-janusgraph   |      ... 27 more
jce-janusgraph   | 3663 [main] WARN  org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor  - Could not initialize gremlin-groovy GremlinScriptEngine as init script could not be evaluated
jce-janusgraph   | java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: gremlin-groovy is not an available GremlinScriptEngine
jce-janusgraph   |      at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:375)
jce-janusgraph   |      at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:1947)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.lambda$new$4(ServerGremlinExecutor.java:141)
jce-janusgraph   |      at java.util.LinkedHashMap$LinkedKeySet.forEach(LinkedHashMap.java:559)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:136)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:122)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:86)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.server.GremlinServer.main(GremlinServer.java:345)
jce-janusgraph   | Caused by: java.lang.IllegalArgumentException: gremlin-groovy is not an available GremlinScriptEngine
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.registerLookUpInfo(CachedGremlinScriptEngineManager.java:95)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.getEngineByName(CachedGremlinScriptEngineManager.java:58)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:267)
jce-janusgraph   |      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
jce-janusgraph   |      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
jce-janusgraph   |      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
jce-janusgraph   |      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
jce-janusgraph   |      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
jce-janusgraph   |      at java.lang.Thread.run(Thread.java:748)
jce-janusgraph   | 3816 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - The org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0 serialization class is deprecated.
jce-janusgraph   | 3870 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v3.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0
jce-janusgraph   | 3870 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - The org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0 serialization class is deprecated.
jce-janusgraph   | 3870 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v3.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0
jce-janusgraph   | 3900 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v3.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0
jce-janusgraph   | 3905 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0
jce-janusgraph   | 3909 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - The org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 serialization class is deprecated.
jce-janusgraph   | 3911 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
jce-janusgraph   | 3914 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - The org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0 serialization class is deprecated.
jce-janusgraph   | 3916 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v1.0+gryo-lite with org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0
jce-janusgraph   | 3917 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - The org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 serialization class is deprecated.
jce-janusgraph   | 3918 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
jce-janusgraph   | 3919 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - The org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0 serialization class is deprecated.
jce-janusgraph   | 3931 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v2.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0
jce-janusgraph   | 3936 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - application/json already has org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0 configured - it will not be replaced by org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, change order of serialization configuration if this is not desired.
jce-janusgraph   | 3952 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v1.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
jce-janusgraph   | 3954 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - application/json already has org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0 configured - it will not be replaced by org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, change order of serialization configuration if this is not desired.
jce-janusgraph   | 4111 [gremlin-server-boss-1] INFO  org.apache.tinkerpop.gremlin.server.GremlinServer  - Gremlin Server configured with worker thread pool of 1, gremlin pool of 8 and boss thread pool of 1.
jce-janusgraph   | 4112 [gremlin-server-boss-1] INFO  org.apache.tinkerpop.gremlin.server.GremlinServer  - Channel started at port 8182.
jce-janusgraph   | 168147 [gremlin-server-exec-2] ERROR org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager  - Could not create GremlinScriptEngine for gremlin-groovy
jce-janusgraph   | java.lang.IllegalStateException: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script2
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.lambda$createGremlinScriptEngine$16(DefaultGremlinScriptEngineManager.java:464)
jce-janusgraph   |      at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
jce-janusgraph   |      at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
jce-janusgraph   |      at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
jce-janusgraph   |      at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
jce-janusgraph   |      at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:272)
jce-janusgraph   |      at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
jce-janusgraph   |      at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
jce-janusgraph   |      at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
jce-janusgraph   |      at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
jce-janusgraph   |      at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
jce-janusgraph   |      at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
jce-janusgraph   |      at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.createGremlinScriptEngine(DefaultGremlinScriptEngineManager.java:450)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.getEngineByName(DefaultGremlinScriptEngineManager.java:219)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.lambda$getEngineByName$0(CachedGremlinScriptEngineManager.java:57)
jce-janusgraph   |      at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.getEngineByName(CachedGremlinScriptEngineManager.java:57)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:267)
jce-janusgraph   |      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
jce-janusgraph   |      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
jce-janusgraph   |      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
jce-janusgraph   |      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
jce-janusgraph   |      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
jce-janusgraph   |      at java.lang.Thread.run(Thread.java:748)
jce-janusgraph   | Caused by: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script2
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:378)
jce-janusgraph   |      at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.lambda$createGremlinScriptEngine$16(DefaultGremlinScriptEngineManager.java:460)
jce-janusgraph   |      ... 24 more
jce-janusgraph   | Caused by: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script2
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:697)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:376)
jce-janusgraph   |      ... 26 more
jce-janusgraph   | Caused by: groovy.lang.MissingPropertyException: No such property: graph for class: Script2
jce-janusgraph   |      at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:65)
jce-janusgraph   |      at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:51)
jce-janusgraph   |      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:309)
jce-janusgraph   |      at Script2.run(Script2.groovy:30)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:674)
jce-janusgraph   |      ... 27 more
jce-janusgraph   | 168152 [gremlin-server-exec-2] WARN  org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor  - Exception processing a script on request [RequestMessage{, requestId=7ee95a3f-3ccc-4204-b0a7-30bc853020fe, op='eval', processor='', args={gremlin=g.V()}}].
jce-janusgraph   | java.lang.IllegalArgumentException: gremlin-groovy is not an available GremlinScriptEngine
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.registerLookUpInfo(CachedGremlinScriptEngineManager.java:95)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.getEngineByName(CachedGremlinScriptEngineManager.java:58)
jce-janusgraph   |      at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:267)
jce-janusgraph   |      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
jce-janusgraph   |      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
jce-janusgraph   |      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
jce-janusgraph   |      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
jce-janusgraph   |      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
jce-janusgraph   |      at java.lang.Thread.run(Thread.java:748)
jce-janusgraph   | 6/5/20 4:29:27 PM ==============================================================

Solution

  • Connecting JanusGraph to an AWS Keyspace appears to be currently not possible.

    In order to connect with an AWS Keyspace SSL communication needs to be enabled. Namely, the following settings need to be configured for JanusGraph:

    'storage.cql.ssl.truststore.location=<location>'
    'storage.cql.ssl.truststore.password=<truststorepw>'
    'storage.cql.ssl.enabled=true'
    

    Unfortunately, even after enabling SSL, JanusGraph throws exceptions on startup (related):

    java.lang.IllegalArgumentException: Unrecognized partitioner: com.amazonaws.cassandra.DefaultPartitioner
    

    This appears to be caused by an explicit check for partitioner names in JanusGraphs' CQLStoreManager. So to sum up, AWS Keyspaces use a custom partitioner which is not supported by JanusGraph.