【问题标题】:Using ConfiguredGraphFactory in a startup script fails在启动脚本中使用 ConfiguredGraphFactory 失败
【发布时间】:2020-08-29 16:20:40
【问题描述】:

据我所知,我正在关注https://docs.janusgraph.org/basics/configured-graph-factory/#overview 指南。

我想运行 gremlin-server 并设置图表。 我想在启动时执行一个 groovy 脚本,该脚本打开或创建图形并为其设置模式。 我使用 Cassandra 作为存储后端,像这样启动它:

cassandra -fR

原木很好听。

我使用提供的配置文件,根据文档调整它们。 我的 gremlin-server/gremlin-server.yaml 保持不变,除了以下几行:

channelizer: org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer
graphManager: org.janusgraph.graphdb.management.JanusGraphManager
graphs: {
  ConfigurationManagementGraph: conf/gremlin-server/janusgraph-cassandra-es-server.properties
}

conf/gremlin-server/janusgraph-cassandra-es-server.properties 的内容也保持不变,除了以下几行:

gremlin.graph=org.janusgraph.core.ConfiguredGraphFactory
storage.backend=cql
graph.graphname=ConfigurationManagementGraph
storage.hostname=127.0.0.1

这里是启动脚本empty-sample.groovy

def globals = [:]
// defines a sample LifeCycleHook that prints some output to the Gremlin Server console.
// note that the name of the key in the "global" map is unimportant.
globals << [hook : [
        onStartUp: { ctx ->
            ctx.logger.info("Executed once at startup of Gremlin Server.")
        },
        onShutDown: { ctx ->
            ctx.logger.info("Executed once at shutdown of Gremlin Server.")
        }
] as LifeCycleHook]

Map map = new HashMap<String, Object>();
map.put("storage.backend", "cql");
map.put("storage.hostname", "127.0.0.1");
map.put("schema.default", "none");
map.put("graph.graphname", "test");
ConfiguredGraphFactory.createConfiguration(new MapConfiguration(map));

JanusGraph jGraph = ConfiguredGraphFactory.open("test");

然后我像这样启动服务器:

$ bin/gremlin-server.sh conf/gremlin-server/gremlin-server.yaml

但我收到一条错误消息,告诉我不存在顶点标签“配置”。 这感觉像是一个schema=none 问题,但我没有触及架构。

8137 [gremlin-server-exec-1] ERROR org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager  - Could not create GremlinScriptEngine for gremlin-groovy
java.lang.IllegalStateException: javax.script.ScriptException: javax.script.ScriptException: java.lang.IllegalArgumentException: Vertex Label with given name does not exist: Configuration
    at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.lambda$createGremlinScriptEngine$16(DefaultGremlinScriptEngineManager.java:464)

编辑

降低堆栈跟踪,我也看到了这一点。 这感觉就像我缺少 gremlin-groovy 作为 GremlinScriptEngine。

7535 [main] WARN  org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor  - Could not initialize gremlin-groovy GremlinScriptEngine as init script could not be evaluated
java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: gremlin-groovy is not an available GremlinScriptEngine
    at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:375)
    at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:1947)
    at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.lambda$new$4(ServerGremlinExecutor.java:141)
    at java.util.LinkedHashMap$LinkedKeySet.forEach(LinkedHashMap.java:559)
    at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:136)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:122)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:86)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.main(GremlinServer.java:345)
Caused by: java.lang.IllegalArgumentException: gremlin-groovy is not an available GremlinScriptEngine
    at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.registerLookUpInfo(CachedGremlinScriptEngineManager.java:95)
    at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.getEngineByName(CachedGremlinScriptEngineManager.java:58)
    at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:267)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

是否有任何配置向导知道如何解决此问题?

【问题讨论】:

    标签: groovy janusgraph gremlin-server


    【解决方案1】:

    我可以通过删除之前在 Cassandra 中创建的所有键空间来解决此问题。

    我可能在某些时候使用“schema.default”=none 制作了 ConfigurationManagementGraph

    我在上面发布的配置应该可以在新的 cassandra db 上运行。

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2018-04-29
      • 2019-06-07
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 2017-06-07
      • 2013-02-06
      相关资源
      最近更新 更多