cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brandon Williams (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-8448) "Comparison method violates its general contract" in AbstractEndpointSnitch
Date Fri, 06 Feb 2015 18:35:35 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-8448?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Brandon Williams updated CASSANDRA-8448:
----------------------------------------
    Attachment: 8448-v2.txt

bq. The current patch is a no-op...?

Whoops, that was silly :)

I think creating a new DES within DES just to sort is going to get very hairy very quickly.
 Instead, v2 locks the update and reset tasks so they can't modify scores while we're sorting.
 This shouldn't be a big problem if they're blocked for a while during the sort.

> "Comparison method violates its general contract" in AbstractEndpointSnitch
> ---------------------------------------------------------------------------
>
>                 Key: CASSANDRA-8448
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8448
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: J.B. Langston
>            Assignee: Brandon Williams
>             Fix For: 2.1.3, 2.0.13
>
>         Attachments: 8448-v2.txt, 8448.txt
>
>
> Seen in both 1.2 and 2.0.  The error is occurring here: https://github.com/apache/cassandra/blob/cassandra-2.0/src/java/org/apache/cassandra/locator/AbstractEndpointSnitch.java#L49
> {code}
> ERROR [Thrift:9] 2014-12-04 20:12:28,732 CustomTThreadPoolServer.java (line 219) Error
occurred during processing of message.
> com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException:
Comparison method violates its general contract!
> 	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199)
> 	at com.google.common.cache.LocalCache.get(LocalCache.java:3932)
> 	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3936)
> 	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4806)
> 	at org.apache.cassandra.service.ClientState.authorize(ClientState.java:352)
> 	at org.apache.cassandra.service.ClientState.ensureHasPermission(ClientState.java:224)
> 	at org.apache.cassandra.service.ClientState.hasAccess(ClientState.java:218)
> 	at org.apache.cassandra.service.ClientState.hasColumnFamilyAccess(ClientState.java:202)
> 	at org.apache.cassandra.thrift.CassandraServer.createMutationList(CassandraServer.java:822)
> 	at org.apache.cassandra.thrift.CassandraServer.batch_mutate(CassandraServer.java:954)
> 	at com.datastax.bdp.server.DseServer.batch_mutate(DseServer.java:576)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$batch_mutate.getResult(Cassandra.java:3922)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$batch_mutate.getResult(Cassandra.java:3906)
> 	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
> 	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
> 	at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:201)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> 	at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.IllegalArgumentException: Comparison method violates its general
contract!
> 	at java.util.TimSort.mergeHi(TimSort.java:868)
> 	at java.util.TimSort.mergeAt(TimSort.java:485)
> 	at java.util.TimSort.mergeCollapse(TimSort.java:410)
> 	at java.util.TimSort.sort(TimSort.java:214)
> 	at java.util.TimSort.sort(TimSort.java:173)
> 	at java.util.Arrays.sort(Arrays.java:659)
> 	at java.util.Collections.sort(Collections.java:217)
> 	at org.apache.cassandra.locator.AbstractEndpointSnitch.sortByProximity(AbstractEndpointSnitch.java:49)
> 	at org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximityWithScore(DynamicEndpointSnitch.java:157)
> 	at org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximityWithBadness(DynamicEndpointSnitch.java:186)
> 	at org.apache.cassandra.locator.DynamicEndpointSnitch.sortByProximity(DynamicEndpointSnitch.java:151)
> 	at org.apache.cassandra.service.StorageProxy.getLiveSortedEndpoints(StorageProxy.java:1408)
> 	at org.apache.cassandra.service.StorageProxy.getLiveSortedEndpoints(StorageProxy.java:1402)
> 	at org.apache.cassandra.service.AbstractReadExecutor.getReadExecutor(AbstractReadExecutor.java:148)
> 	at org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1223)
> 	at org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1165)
> 	at org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:255)
> 	at org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:225)
> 	at org.apache.cassandra.auth.Auth.selectUser(Auth.java:243)
> 	at org.apache.cassandra.auth.Auth.isSuperuser(Auth.java:84)
> 	at org.apache.cassandra.auth.AuthenticatedUser.isSuper(AuthenticatedUser.java:50)
> 	at org.apache.cassandra.auth.CassandraAuthorizer.authorize(CassandraAuthorizer.java:69)
> 	at org.apache.cassandra.service.ClientState$1.load(ClientState.java:338)
> 	at org.apache.cassandra.service.ClientState$1.load(ClientState.java:335)
> 	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
> 	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
> 	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
> 	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
> 	... 18 more
> {code}
> Workaround: Setting  -Djava.util.Arrays.useLegacyMergeSort=true causes the error to go
away.



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

Mime
View raw message