Cassandra commitlog如何被破坏?

时间:2016-08-22 17:26:37

标签: cassandra

这是我的提交日志第二次被破坏,服务器拒绝启动。让我担心的是,即使没有对数据库进行更新,我也会遇到这些错误问题。

我的配置说每隔10秒就会同步一次commitlog,那么除非在这10秒内发生崩溃,否则文件怎么会被破坏呢?

这是一个Cassandra bug吗?或者通过设计,即糟糕的设计?

我在Windows 10,Datastax安装程序上使用3.4。

在stdout日志中,最后一部分是

INFO  06:17:39 Replaying C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471353812251.log, C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471353812252.log, C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471411951134.log, C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471454506802.log, C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471532812678.log
ERROR 06:17:39 Exiting due to error while processing commit log during initialization.
org.apache.cassandra.db.commitlog.CommitLogReplayer$CommitLogReplayException: Could not read commit log descriptor in file C:\Program Files\DataStax-DDC\data\commitlog\CommitLog-6-1471353812252.log
    at org.apache.cassandra.db.commitlog.CommitLogReplayer.handleReplayError(CommitLogReplayer.java:611) [apache-cassandra-3.4.0.jar:3.4.0]
    at org.apache.cassandra.db.commitlog.CommitLogReplayer.recover(CommitLogReplayer.java:373) [apache-cassandra-3.4.0.jar:3.4.0]
    at org.apache.cassandra.db.commitlog.CommitLogReplayer.recover(CommitLogReplayer.java:236) [apache-cassandra-3.4.0.jar:3.4.0]
    at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:192) [apache-cassandra-3.4.0.jar:3.4.0]
    at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:172) [apache-cassandra-3.4.0.jar:3.4.0]
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:283) [apache-cassandra-3.4.0.jar:3.4.0]
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:551) [apache-cassandra-3.4.0.jar:3.4.0]
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:680) [apache-cassandra-3.4.0.jar:3.4.0]

1 个答案:

答案 0 :(得分:1)

我见过类似的错误。发生这种情况,当Cassandra进程被破解时可能是由于OOM。运行" dmesg"并检查它是否因OOM而被杀死。在这种情况下,它写入的提交日志可能已损坏或其0kb文件(检查上述文件的大小错误),并且当重新启动Cassandra并重放该文件时,它会抛出上述错误。