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.