JanusGraph预打包分发:Cassandra分叉无限循环导致超时



虽然标题相似,但不是重复的(问题的结果是一样的,但它不是来自同一个来源,我的Java版本是Java 8(。

我使用的是预打包发行版0.6.1,直到最近才开始工作。我不记得自从它起作用以来对配置做过任何更改。

即使使用了verbose选项,我似乎也无法确定错误的来源,因为一切似乎都是正确的,直到超时之前不再出现日志,就像有一个无限循环一样。此外,增加超时不会产生任何结果。

这是一个截断的输出:

Forking Cassandra...
Running `nodetool statusbinary`. 
<TRUNCATE>
INFO  [main] 2022-08-08 09:12:03,173 StorageService.java:1536 - JOINING: Finish joining ring
INFO  [main] 2022-08-08 09:12:03,193 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='edgestore_lock_')
INFO  [main] 2022-08-08 09:12:03,194 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='txlog')
INFO  [main] 2022-08-08 09:12:03,194 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='janusgraph_ids')
INFO  [main] 2022-08-08 09:12:03,194 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='system_properties')
INFO  [main] 2022-08-08 09:12:03,194 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='graphindex_lock_')
INFO  [main] 2022-08-08 09:12:03,194 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='system_properties_lock_')
INFO  [main] 2022-08-08 09:12:03,194 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='edgestore')
INFO  [main] 2022-08-08 09:12:03,194 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='graphindex')
INFO  [main] 2022-08-08 09:12:03,194 SecondaryIndexManager.java:512 - Executing pre-join tasks for: CFS(Keyspace='janusgraph', ColumnFamily='systemlog')
INFO  [main] 2022-08-08 09:12:03,221 StorageService.java:2452 - Node localhost/127.0.0.1 state jump to NORMAL
..................... timeout exceeded (60 seconds)
See /home/<PATH>/Documents/Progs/JanusGraph/janusgraph-full-0.6.1/bin/../logs/cassandra.log for Cassandra log output.

感谢所有将要阅读的人!

无限循环直觉是正确的!

溶液(脏(

wait_for_cassandra方法的statusbinary="`$BIN/../cassandra/bin/nodetool statusbinary 2>/dev/null | tr -d 'nr'`"行中添加-Dcom.sun.jndi.rmiURLParsing=legacy。(statusbinary="`$BIN/../cassandra/bin/nodetool -Dcom.sun.jndi.rmiURLParsing=legacy statusbinary 2>/dev/null | tr -d 'nr'`"中的结果(
这应该可以解决问题。

解释

bin/janusgraph.sh中,Cassandra的启动由start方法处理,然后等待进程启动,然后再转到ElasticSearch和JanusGraph。等待由wait_for_cassandra方法处理
在这种方法中,有一个无限循环等待cassandra/bin/nodetool返回"运行";,并且它不处理任何其他情况(即错误、无返回…(

因此,我自己尝试了cassandra/bin/nodetool statusbinary命令。它返回了一个错误nodetool: Failed to connect to '127.0.0.1:7199' - URISyntaxException: 'Malformed IPv6 address at index 7: rmi://[127.0.0.1]:7199'.
搜索这个错误,我找到了这个StackOverflow帖子,更重要的是找到了这个答案。(似乎错误可能来自OpenJDK更新(
由于我找不到在哪里添加JAVA_TOOL_OPTIONS参数以将其作为环境变量,我不得不直接修改bin/janusgraph.sh文件。

如果你有什么办法做得好,我很高兴知道!

最新更新