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

Gary Dusbabek commented on CASSANDRA-1904:
------------------------------------------

I get a different error, which happens before the error in Timo's stack trace.  
I suspect his files weren't really zero-length, but the BRAF just reported them 
that way.  Either way: CFS.scrubDataDirectories() should take secondary indexes 
into account.

My forced error:

 INFO [main] sstablereader.j...@154 14:43:44,146 Opening 
/Users/gary.dusbabek/cass-configs/trunk/data_1/data/Keyspace1/Indexed1.birthdate_idx-f-1
DEBUG [main] sstablereader.j...@164 14:43:44,146 Load statistics for 
/Users/gary.dusbabek/cass-configs/trunk/data_1/data/Keyspace1/Indexed1.birthdate_idx-f-1
ERROR [main] columnfamilystore.j...@234 14:43:44,147 Corrupt sstable 
/Users/gary.dusbabek/cass-configs/trunk/data_1/data/Keyspace1/Indexed1.birthdate_idx-f-1=[Filter.db,
 Index.db, Data.db, Statistics.db]; skipped
java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:375)
        at 
org.apache.cassandra.utils.EstimatedHistogram$EstimatedHistogramSerializer.deserialize(EstimatedHistogram.java:179)
        at 
org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:166)
        at 
org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:225)
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:488)
        at 
org.apache.cassandra.db.ColumnFamilyStore.addIndex(ColumnFamilyStore.java:345)
        at 
org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:246)
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:488)
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:476)
        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:162)
        at 
org.apache.cassandra.thrift.CassandraDaemon.setup(CassandraDaemon.java:54)
        at 
org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCassandraDaemon.java:240)
        at 
org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:133)
DEBUG [main] sstabletracker.j...@179 14:43:44,148 key cache capacity for 
Indexed1.birthdate_idx is 200000
DEBUG [main] sstabletracker.j...@190 14:43:44,149 row cache capacity for 
Indexed1.birthdate_idx is 0

> 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