[ 
https://issues.apache.org/jira/browse/CASSANDRA-1904?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis updated CASSANDRA-1904:
--------------------------------------

    Fix Version/s:     (was: 0.7.0)
                   0.7.1
         Assignee: Gary Dusbabek

> Crash during startup: SSTable doesn't handle corrupt (empty) tmp files
> ----------------------------------------------------------------------
>
>                 Key: CASSANDRA-1904
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1904
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.7.0 rc 2
>            Reporter: Timo Nentwig
>            Assignee: Gary Dusbabek
>             Fix For: 0.7.1
>
>
> Applies to 0.7rc3 as well, but not yet selectable in Jira.
> cassandra stumbles upons empty Data files and crashes during startup rather 
> than ignoring these files:
> java.lang.ArithmeticException: / by zero
>       at 
> org.apache.cassandra.io.sstable.SSTable.estimateRowsFromIndex(SSTable.java:233)
>       at 
> org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:284)
>       at 
> org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:200)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:225)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:448)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.addIndex(ColumnFamilyStore.java:305)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:246)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:448)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:436)
>       at org.apache.cassandra.db.Table.initCf(Table.java:360)
>       at org.apache.cassandra.db.Table.<init>(Table.java:290)
>       at org.apache.cassandra.db.Table.open(Table.java:107)
>       at 
> org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassandraDaemon.java:138)
>       at 
> org.apache.cassandra.thrift.CassandraDaemon.setup(CassandraDaemon.java:55)
>       at 
> org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCassandraDaemon.java:216)
>       at 
> org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:134)
> Exception encountered during startup.
> java.lang.ArithmeticException: / by zero
>       at 
> org.apache.cassandra.io.sstable.SSTable.estimateRowsFromIndex(SSTable.java:233)
>       at 
> org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:284)
>       at 
> org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:200)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:225)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:448)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.addIndex(ColumnFamilyStore.java:305)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:246)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:448)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:436)
>       at org.apache.cassandra.db.Table.initCf(Table.java:360)
>       at org.apache.cassandra.db.Table.<init>(Table.java:290)
>       at org.apache.cassandra.db.Table.open(Table.java:107)
>       at 
> org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassandraDaemon.java:138)
>       at 
> org.apache.cassandra.thrift.CassandraDaemon.setup(CassandraDaemon.java:55)
>       at 
> org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCassandraDaemon.java:216)
>       at 
> org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:134)
> The empty Data/Index tmp files were in my case created and left over when I 
> attempted to create a secondary index at runtime which crashed the JVM due to 
> OOM.
> SSTable handles IOExceptions so it should be an easy fix: in 
> SSTable.estimateRowsFromIndex() just check for ifile.length() 
> ==ifile.getFilePointer()==keys==0 and throw an IOException.

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

Reply via email to