Philip Thompson created CASSANDRA-9535:
------------------------------------------

             Summary: KeyCache code should handle assertion errors from corrupt 
keycache better
                 Key: CASSANDRA-9535
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9535
             Project: Cassandra
          Issue Type: Bug
            Reporter: Philip Thompson
             Fix For: 3.x, 2.2.x


While running 2.2.0-beta1, a user ran into the following exception from a 
corrupt keycache file:
{code}
ERROR [main] 2015-05-30 10:31:18,603 CassandraDaemon.java:571 - Exception 
encountered during startup
java.lang.AssertionError: null
        at 
org.apache.cassandra.db.RowIndexEntry$IndexedEntry.<init>(RowIndexEntry.java:202)
 ~[main/:na]
        at 
org.apache.cassandra.db.RowIndexEntry$IndexedEntry.<init>(RowIndexEntry.java:190)
 ~[main/:na]
        at 
org.apache.cassandra.db.RowIndexEntry$Serializer.deserialize(RowIndexEntry.java:144)
 ~[main/:na]
        at 
org.apache.cassandra.service.CacheService$KeyCacheSerializer.deserialize(CacheService.java:446)
 ~[main/:na]
        at 
org.apache.cassandra.cache.AutoSavingCache.loadSaved(AutoSavingCache.java:142) 
~[main/:na]
        at 
org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:328) 
~[main/:na]
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:455)
 ~[main/:na]
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:431)
 ~[main/:na]
        at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:324) 
~[main/:na]
        at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:275) 
~[main/:na]
        at org.apache.cassandra.db.Keyspace.open(Keyspace.java:117) ~[main/:na]
        at org.apache.cassandra.db.Keyspace.open(Keyspace.java:94) ~[main/:na]
        at 
org.apache.cassandra.service.StartupChecks$8.execute(StartupChecks.java:281) 
~[main/:na]
        at 
org.apache.cassandra.service.StartupChecks.verify(StartupChecks.java:103) 
~[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:128) 
[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:451) 
[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:558) 
[main/:na]
{code}

This is from the failed assert of {{columnsIndex.size() >1}} at
{code}
private IndexedEntry(long position, DeletionTime deletionTime, 
List<IndexHelper.IndexInfo> columnsIndex)
        {
            super(position);
            assert deletionTime != null;
            assert columnsIndex != null && columnsIndex.size() > 1;
            this.deletionTime = deletionTime;
            this.columnsIndex = columnsIndex;
        }
{code}

Discussing with [~thobbs], he felt that C* could do a better job of handling 
this, even though the root issue was a corrupt file.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to