Cassandra"意外错误反序列化突变"错误

Ros*_*ngo 3 cassandra cqlsh

卡桑德拉停了下来.当我使用"service cassandra start"或"service cassandra restart"重新启动Cassandra时,我收到以下错误(来自"/var/log/cassandra/system.log"):

ERROR [main] 2014-11-14 02:08:52,379 CommitLogReplayer.java (line 304) Unexpected error deserializing mutation; saved to /tmp/mutation3145492124947244713dat and ignored.  This may be caused by replaying a mutation against a table with the same name but incompatible schema.  Exception follows:
org.apache.cassandra.serializers.MarshalException: Expected 8 or 0 byte long for date (7)
        at org.apache.cassandra.serializers.TimestampSerializer.validate(TimestampSerializer.java:118)
        at org.apache.cassandra.db.marshal.AbstractType.validate(AbstractType.java:171)
        at org.apache.cassandra.db.marshal.AbstractType.validateCollectionMember(AbstractType.java:289)
        at org.apache.cassandra.db.marshal.AbstractCompositeType.validate(AbstractCompositeType.java:282)
        at org.apache.cassandra.db.commitlog.CommitLogReplayer.recover(CommitLogReplayer.java:274)
        at org.apache.cassandra.db.commitlog.CommitLogReplayer.recover(CommitLogReplayer.java:95)
        at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:151)
        at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:131)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:336)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:496)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:585)
Run Code Online (Sandbox Code Playgroud)

现在我无法启动cassandra.cqlsh也不可用.

cod*_*zhi 5

我也遇到过这个问题.我想分享一下我是如何解决这个问题的.

  • 更改调试模式

    默认调试模式是INFO,输出太小而无法跟踪错误.您应该将调试模式从INFO更改为DEBUG.这由log4j-server.properties文件中的以下行确定:

    log4j.rootLogger = INFO,标准输出,R

  • 重新运行cassandra

    从输出中,我发现重放提交日志文件时出现错误.我认为日志文件中有问题.但是日志文件是二进制文件,我不知道如何阅读它.所以我尝试删除导致错误的日志文件,然后重新启动cassandra.它的工作原理!

也许根本问题与我的不同,但您可以尝试以这种方式找到它.希望这可以提供帮助.