[
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.