You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2009/08/18 19:44:14 UTC

[jira] Commented: (CASSANDRA-370) Commit log replay issues

    [ https://issues.apache.org/jira/browse/CASSANDRA-370?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12744615#action_12744615 ] 

Jonathan Ellis commented on CASSANDRA-370:
------------------------------------------

02
    read(bytes) doesn't automatically throw EOFException if it reads less than asked for, so we need to check for that maniually

01
    avoid opening multiple writers for the current file; the buffered nature of the global
    logWriter_ could cause problems

james, in all likelihood the problem fixed by 02 is what you were running into, and that patch should fix replaying your old commitlog as-is (magic! :)

> Commit log replay issues
> ------------------------
>
>                 Key: CASSANDRA-370
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-370
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: OS X 10.5.7
>            Reporter: James Golick
>            Priority: Critical
>         Attachments: 0001-CASSANDRA-370-avoid-opening-multiple-writers-for-the-c.txt, 0002-read-bytes-doesn-t-automatically-throw-EOFException-i.txt
>
>
> I've been having a bunch of trouble replaying commit logs. I've seen various exceptions, including:
> java.lang.NegativeArraySizeException
>         at org.apache.cassandra.db.CommitLog.recover(CommitLog.java:273)
>         at org.apache.cassandra.db.RecoveryManager.doRecovery(RecoveryManager.java:63)
>         at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:95)
>         at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:156)
> Exception encountered during startup.
> java.lang.NegativeArraySizeException
>         at org.apache.cassandra.db.CommitLog.recover(CommitLog.java:273)
>         at org.apache.cassandra.db.RecoveryManager.doRecovery(RecoveryManager.java:63)
>         at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:95)
>         at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:156)
> I also got this:
> java.lang.RuntimeException: Unable to load comparator class 'org.apache.cassandra.db.marshal.UTF8Typ'.  probably this means you have obsolete sstables lying around
>         at org.apache.cassandra.db.ColumnFamily$ColumnFamilySerializer.readComparator(ColumnFamily.java:525)
>         at org.apache.cassandra.db.ColumnFamily$ColumnFamilySerializer.deserializeEmpty(ColumnFamily.java:535)
>         at org.apache.cassandra.db.ColumnFamily$ColumnFamilySerializer.deserialize(ColumnFamily.java:500)
>         at org.apache.cassandra.db.RowSerializer.deserialize(Row.java:225)
>         at org.apache.cassandra.db.CommitLog.recover(CommitLog.java:284)
>         at org.apache.cassandra.db.RecoveryManager.doRecovery(RecoveryManager.java:63)
>         at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:95)
>         at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:156)
> Caused by: java.lang.ClassNotFoundException: org/apache/cassandra/db/marshal/UTF8Typ
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:169)
>         at org.apache.cassandra.db.ColumnFamily$ColumnFamilySerializer.readComparator(ColumnFamily.java:521)
>         ... 7 more
> and this:
> java.io.EOFException
>         at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323)
>         at java.io.DataInputStream.readUTF(DataInputStream.java:572)
>         at java.io.DataInputStream.readUTF(DataInputStream.java:547)
>         at org.apache.cassandra.db.RowSerializer.deserialize(Row.java:218)
>         at org.apache.cassandra.db.CommitLog.recover(CommitLog.java:284)
>         at org.apache.cassandra.db.RecoveryManager.doRecovery(RecoveryManager.java:63)
>         at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:95)
>         at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:156)
> Exception encountered during startup.
> Not sure if any of them are related.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.