虽然标题相似,但不是重复的(问题的结果是一样的,但它不是来自同一个来源,我的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
文件。
如果你有什么办法做得好,我很高兴知道!