Cassandra 3.11 抛出错误 "Exiting due to error while processing commit log during initialization"

Cassandra 3.11 throwing error "Exiting due to error while processing commit log during initialization"

我在 mac 上使用 brew 安装了 Cassandra,它工作了几天。但是现在它开始抛出错误而没有更改 yaml 文件中的任何内容。

Connection error: ('Unable to connect to any servers', {'127.0.0.1': error(61, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})

所以我尝试使用 brew 将 Cassandra 更新到 3.11。现在启动 Cassandra 时出现此错误。

ERROR [main] 2017-09-20 12:52:02,732 JVMStabilityInspector.java:82 - Exiting due to error while processing commit log during initialization.
org.apache.cassandra.db.commitlog.CommitLogReadHandler$CommitLogReadException: Encountered bad header at position 157007 of commit log /usr/local/var/lib/cassandra/commitlog/CommitLog-6-1505888222471.log, with bad position but valid CRC
    at org.apache.cassandra.db.commitlog.CommitLogSegmentReader$SegmentIterator.computeNext(CommitLogSegmentReader.java:113) [apache-cassandra-3.11.0.jar:3.11.0]
    at org.apache.cassandra.db.commitlog.CommitLogSegmentReader$SegmentIterator.computeNext(CommitLogSegmentReader.java:84) [apache-cassandra-3.11.0.jar:3.11.0]
    at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143) [guava-18.0.jar:na]
    at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) [guava-18.0.jar:na]
    at org.apache.cassandra.db.commitlog.CommitLogReader.readCommitLogSegment(CommitLogReader.java:190) [apache-cassandra-3.11.0.jar:3.11.0]
    at org.apache.cassandra.db.commitlog.CommitLogReader.readAllFiles(CommitLogReader.java:84) [apache-cassandra-3.11.0.jar:3.11.0]
    at org.apache.cassandra.db.commitlog.CommitLogReplayer.replayFiles(CommitLogReplayer.java:140) [apache-cassandra-3.11.0.jar:3.11.0]
    at org.apache.cassandra.db.commitlog.CommitLog.recoverFiles(CommitLog.java:177) [apache-cassandra-3.11.0.jar:3.11.0]
    at org.apache.cassandra.db.commitlog.CommitLog.recoverSegmentsOnDisk(CommitLog.java:158) [apache-cassandra-3.11.0.jar:3.11.0]
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:325) [apache-cassandra-3.11.0.jar:3.11.0]
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:600) [apache-cassandra-3.11.0.jar:3.11.0]
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:689) [apache-cassandra-3.11.0.jar:3.11.0]

由此link 我得到了一些关于节点工具修复的信息。但即使是节点工具修复也不起作用。

objc[15089]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/bin/java (0x10934b4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10abba4e0). One of the two will be used. Which one is undefined.
nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.
commit log /usr/local/var/lib/cassandra/commitlog/CommitLog-6-1505888222471.log

听起来您的提交日志文件之一已损坏。删除该文件,然后重新启动。

"But even node tool repair is not working."

我不担心这个。如果您在单节点集群上(例如:您自己的 Mac),repair 没有任何其他节点可以从中传输数据,因此它无论如何都无法工作。