Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-12832

SASI index corruption on too many overflow items

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Normal
    • Resolution: Invalid
    • None
    • Feature/SASI
    • None
    • Normal

    Description

      When SASI index has too many overflow items, it currently writes a corrupted index file:

      java.lang.AssertionError: cannot have more than 8 overflow collisions per leaf, but had: 15
              at org.apache.cassandra.index.sasi.disk.AbstractTokenTreeBuilder$Leaf.createOverflowEntry(AbstractTokenTreeBuilder.java:357) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.AbstractTokenTreeBuilder$Leaf.createEntry(AbstractTokenTreeBuilder.java:346) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.DynamicTokenTreeBuilder$DynamicLeaf.serializeData(DynamicTokenTreeBuilder.java:180) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.AbstractTokenTreeBuilder$Leaf.serialize(AbstractTokenTreeBuilder.java:306) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.AbstractTokenTreeBuilder.write(AbstractTokenTreeBuilder.java:90) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder$MutableDataBlock.flushAndClear(OnDiskIndexBuilder.java:629) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder$MutableLevel.flush(OnDiskIndexBuilder.java:446) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder$MutableLevel.finalFlush(OnDiskIndexBuilder.java:451) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.finish(OnDiskIndexBuilder.java:296) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.finish(OnDiskIndexBuilder.java:258) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.finish(OnDiskIndexBuilder.java:241) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter$Index.lambda$scheduleSegmentFlush$0(PerSSTableIndexWriter.java:267) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter$Index.lambda$complete$1(PerSSTableIndexWriter.java:296) ~[main/:na]
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_91]
              at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_91]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_91]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
              at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
      ERROR [MemtableFlushWriter:4] 2016-10-23 23:17:19,920 DataTracker.java:168 - Can't open index file at ...., skipping.
      java.lang.IllegalArgumentException: position: -524200, limit: 12288
              at org.apache.cassandra.index.sasi.utils.MappedBuffer.position(MappedBuffer.java:106) ~[main/:na]
              at org.apache.cassandra.index.sasi.disk.OnDiskIndex.<init>(OnDiskIndex.java:155) ~[main/:na]
              at org.apache.cassandra.index.sasi.SSTableIndex.<init>(SSTableIndex.java:62) ~[main/:na]
              at org.apache.cassandra.index.sasi.conf.DataTracker.getIndexes(DataTracker.java:150) [main/:na]
              at org.apache.cassandra.index.sasi.conf.DataTracker.update(DataTracker.java:69) [main/:na]
              at org.apache.cassandra.index.sasi.conf.ColumnIndex.update(ColumnIndex.java:147) [main/:na]
              at org.apache.cassandra.index.sasi.SASIIndex.handleNotification(SASIIndex.java:320) [main/:na]
              at org.apache.cassandra.db.lifecycle.Tracker.notifyAdded(Tracker.java:421) [main/:na]
              at org.apache.cassandra.db.lifecycle.Tracker.replaceFlushed(Tracker.java:356) [main/:na]
              at org.apache.cassandra.db.compaction.CompactionStrategyManager.replaceFlushed(CompactionStrategyManager.java:317) [main/:na]
              at org.apache.cassandra.db.ColumnFamilyStore.replaceFlushed(ColumnFamilyStore.java:1569) [main/:na]
              at org.apache.cassandra.db.ColumnFamilyStore$Flush.flushMemtable(ColumnFamilyStore.java:1197) [main/:na]
              at org.apache.cassandra.db.ColumnFamilyStore$Flush.run(ColumnFamilyStore.java:1100) [main/:na]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
              at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ifesdjeen Alex Petrov
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: