[ 
https://issues.apache.org/jira/browse/CASSANDRA-9519?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14622321#comment-14622321
 ] 

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 games

It's actually not all that hard. I've push on [my 
branch|https://github.com/pcmanus/cassandra/commits/9519] 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: https://issues.apache.org/jira/browse/CASSANDRA-9519
>             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(TimSort.java:895) ~[na:1.8.0_45]
>       at java.util.TimSort.mergeAt(TimSort.java:512) ~[na:1.8.0_45]
>       at java.util.TimSort.mergeCollapse(TimSort.java:437) ~[na:1.8.0_45]
>       at java.util.TimSort.sort(TimSort.java:241) ~[na:1.8.0_45]
>       at java.util.Arrays.sort(Arrays.java:1512) ~[na:1.8.0_45]
>       at java.util.ArrayList.sort(ArrayList.java:1454) ~[na:1.8.0_45]
>       at java.util.Collections.sort(Collections.java:175) ~[na:1.8.0_45]
>       at 
> org.apache.cassandra.locator.AbstractEndpointSnitch.sortByProximity(AbstractEndpointSnitch.java:49)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximityWithScore(DynamicEndpointSnitch.java:158)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximityWithBadness(DynamicEndpointSnitch.java:187)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximity(DynamicEndpointSnitch.java:152)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.service.StorageProxy.getLiveSortedEndpoints(StorageProxy.java:1530)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.service.StorageProxy.getRangeSlice(StorageProxy.java:1688)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:256)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:209)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:63)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:238)
>  ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:260) 
> ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:272) 
> ~[cassandra-all-2.1.5.469.jar:2.1.5.469]
> {code}



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

Reply via email to