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

时间:2014-11-14 09:19:44

标签: cassandra cqlsh

卡珊德拉停了下来。 当我使用" service cassandra start"重新启动Cassandra时或者" service cassandra restart",我收到以下错误(来自" /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)

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

1 个答案:

答案 0 :(得分:5)

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

  • 更改调试模式

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

      

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

  • 重新运行cassandra

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

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