cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-8182) Comparison method violates its general contract in IndexSummaryManager.redistributeSummaries
Date Fri, 24 Oct 2014 07:21:34 GMT


Sylvain Lebresne commented on CASSANDRA-8182:

Looks like this come from CASSANDRA-5519. I suspect the problem is that the comparison function
uses the SSTableReader {{readMeter.fifteenMinuteRate()}}, but if you're unlucky this value
can change in the middle of the sorting (thus changing the comparison value for 2 sstables
in the middle of the sorting). We probably should save those rate in a map or something before
the sort and have the sorting refer to those saved and stable values.

> Comparison method violates its general contract in IndexSummaryManager.redistributeSummaries
> --------------------------------------------------------------------------------------------
>                 Key: CASSANDRA-8182
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: 2.1.0
>            Reporter: Juho Mäkinen
>            Assignee: Tyler Hobbs
> I found this exception while going over the logs of my new 2.1.0 production candidate
> ERROR [IndexSummaryManager:1] 2014-10-23 14:37:56,727 - Exception
in thread Thread[IndexSummaryManager:1,1,main]
> java.lang.IllegalArgumentException: Comparison method violates its general contract!
>         at java.util.TimSort.mergeLo( ~[na:1.7.0_67]
>         at java.util.TimSort.mergeAt( ~[na:1.7.0_67]
>         at java.util.TimSort.mergeCollapse( ~[na:1.7.0_67]
>         at java.util.TimSort.sort( ~[na:1.7.0_67]
>         at java.util.TimSort.sort( ~[na:1.7.0_67]
>         at java.util.Arrays.sort( ~[na:1.7.0_67]
>         at java.util.Collections.sort( ~[na:1.7.0_67]
>         at
>         at
>         at$1.runMayThrow(
>         at ~[apache-cassandra-2.1.0.jar:2.1.0]
>         at org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$
>         at java.util.concurrent.Executors$ [na:1.7.0_67]
>         at java.util.concurrent.FutureTask.runAndReset( [na:1.7.0_67]
>         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(
>         at java.util.concurrent.ScheduledThreadPoolExecutor$
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(
>         at java.util.concurrent.ThreadPoolExecutor$
>         at [na:1.7.0_67]
> There's some other cases of invalid comparison methods in the past, but not from this

This message was sent by Atlassian JIRA

View raw message