运行 带有 Amazon Keyspaces 存储后端的 JanusGraph

Run JanusGraph with Amazon Keyspaces Storage Backend

是否可以运行 JanusGraph Docker 具有 AWS Keyspace 作为存储后端的容器?

我尝试使用 Janus Graphs cassandra-es 模板配置 Keyspace。如果我 运行 以下 docker-compose.yml JanusGraph 记录异常和所有查询 return a ScriptEvaluationError: gremlin-groovy is not an available GremlinScriptEngine'。可能无法建立与Keyspace的连接?

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:

aws 密钥空间的用户名和密码是根据 docs

创建的

以下是启动日志(详细)

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[=12=](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(DefaultGremlinScriptEngineManager.java:464)
jce-janusgraph   |      at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
jce-janusgraph   |      at java.util.stream.ReferencePipeline.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.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[=12=](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[=12=](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(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(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[=12=](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(DefaultGremlinScriptEngineManager.java:464)
jce-janusgraph   |      at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
jce-janusgraph   |      at java.util.stream.ReferencePipeline.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.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[=12=](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[=12=](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(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[=12=](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 ==============================================================

目前似乎无法将 JanusGraph 连接到 AWS Keyspace。

为了与 AWS Keyspace 连接,需要启用 SSL 通信。即需要为JanusGraph配置如下设置:

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

不幸的是,即使在启用 SSL 之后,JanusGraph 也会在启动时抛出异常 (related):

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

这似乎是由 JanusGraphs CQLStoreManager 中对分区程序名称的显式检查引起的。综上所述,AWS Keyspaces 使用了 JanusGraph 不支持的自定义分区程序。