cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-9519) CASSANDRA-8448 Doesn't seem to be fixed
Date Fri, 10 Jul 2015 13:54:04 GMT


Sylvain Lebresne commented on CASSANDRA-9519:

bq. My take from the stacktrace was that DES.sortByProximityWithScore was calling super to
AES.sortByProximity which then had a problem with the array changing while being sorted. 

Well, the whole point of {{sortByProximity}} is to sort the list input in place, so if the
caller changes the input behind our back, we have a very serious problem (and a quick scan
of the call site indicates we do no such thing). In fact, your patch break {{sortByProximity}}
plain and simple since it make it sort a local copy of the list that nobody ever gets (and
the list that should be sorted isn't).

Besides, the error message strongly suggests the problem is with the comparison method.

bq. It would be nice if we had a test that could reproduce this so we don't have to play guessing

It's actually not all that hard. I've push on [my branch|]
a test that on my box fail pretty reliably without the patch but haven't failed with it

> CASSANDRA-8448 Doesn't seem to be fixed
> ---------------------------------------
>                 Key: CASSANDRA-9519
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Jeremiah Jordan
>             Fix For: 2.1.x, 2.2.x
>         Attachments: 9519.txt
> Still seeing the "Comparison method violates its general contract!" in 2.1.5
> {code}
> java.lang.IllegalArgumentException: Comparison method violates its general contract!
> 	at java.util.TimSort.mergeHi( ~[na:1.8.0_45]
> 	at java.util.TimSort.mergeAt( ~[na:1.8.0_45]
> 	at java.util.TimSort.mergeCollapse( ~[na:1.8.0_45]
> 	at java.util.TimSort.sort( ~[na:1.8.0_45]
> 	at java.util.Arrays.sort( ~[na:1.8.0_45]
> 	at java.util.ArrayList.sort( ~[na:1.8.0_45]
> 	at java.util.Collections.sort( ~[na:1.8.0_45]
> 	at org.apache.cassandra.locator.AbstractEndpointSnitch.sortByProximity(
> 	at org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximityWithScore(
> 	at org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximityWithBadness(
> 	at org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximity(
> 	at org.apache.cassandra.service.StorageProxy.getLiveSortedEndpoints(
> 	at org.apache.cassandra.service.StorageProxy.getRangeSlice( ~[cassandra-all-]
> 	at org.apache.cassandra.cql3.statements.SelectStatement.execute(
> 	at org.apache.cassandra.cql3.statements.SelectStatement.execute(
> 	at org.apache.cassandra.cql3.statements.SelectStatement.execute(
> 	at org.apache.cassandra.cql3.QueryProcessor.processStatement(
> 	at org.apache.cassandra.cql3.QueryProcessor.process( ~[cassandra-all-]
> 	at org.apache.cassandra.cql3.QueryProcessor.process( ~[cassandra-all-]
> {code}

This message was sent by Atlassian JIRA

View raw message