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

Comparison method violates its general contract in IndexSummaryManager.redistributeSummaries

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Low
    • Resolution: Fixed
    • 2.1.2
    • None
    • None
    • 2.1.0

    Description

      I found this exception while going over the logs of my new 2.1.0 production candidate cluster:

      ERROR [IndexSummaryManager:1] 2014-10-23 14:37:56,727 CassandraDaemon.java:166 - Exception in thread Thread[IndexSummaryManager:1,1,main]
      java.lang.IllegalArgumentException: Comparison method violates its general contract!
              at java.util.TimSort.mergeLo(TimSort.java:747) ~[na:1.7.0_67]
              at java.util.TimSort.mergeAt(TimSort.java:483) ~[na:1.7.0_67]
              at java.util.TimSort.mergeCollapse(TimSort.java:408) ~[na:1.7.0_67]
              at java.util.TimSort.sort(TimSort.java:214) ~[na:1.7.0_67]
              at java.util.TimSort.sort(TimSort.java:173) ~[na:1.7.0_67]
              at java.util.Arrays.sort(Arrays.java:659) ~[na:1.7.0_67]
              at java.util.Collections.sort(Collections.java:217) ~[na:1.7.0_67]
              at org.apache.cassandra.io.sstable.IndexSummaryManager.redistributeSummaries(IndexSummaryManager.java:277) ~[apache-cassandra-2.1.0.jar:2.1.0]
              at org.apache.cassandra.io.sstable.IndexSummaryManager.redistributeSummaries(IndexSummaryManager.java:238) ~[apache-cassandra-2.1.0.jar:2.1.0]
              at org.apache.cassandra.io.sstable.IndexSummaryManager$1.runMayThrow(IndexSummaryManager.java:139) ~[apache-cassandra-2.1.0.jar:2.1.0]
              at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) ~[apache-cassandra-2.1.0.jar:2.1.0]
              at org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable.run(DebuggableScheduledThreadPoolExecutor.java:75) ~[apache-cassandra-2.1.0.jar:2.1.0]
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_67]
              at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) [na:1.7.0_67]
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [na:1.7.0_67]
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.7.0_67]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_67]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_67]
              at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
      

      There's some other cases of invalid comparison methods in the past, but not from this case.

      Attachments

        1. 8182.txt
          2 kB
          Tom Hobbs
        2. 8182-v2.txt
          3 kB
          Tom Hobbs

        Activity

          People

            thobbs Tom Hobbs
            garo5 Juho Mäkinen
            Tom Hobbs
            Benjamin Lerer
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: