You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2015/10/21 15:08:27 UTC

[jira] [Resolved] (AMQ-6016) java.lang.IllegalArgumentException: Comparison method violates its general contract!

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

Gary Tully resolved AMQ-6016.
-----------------------------
    Resolution: Fixed

The implementation from https://issues.apache.org/jira/browse/AMQ-2106 needed to be reworked to maintain group assignment per destination. Otherwise dispatch on one destination could flip order during consumer sort on another destination. Window is tiny (duration of sort coinciding with consumer remove) which proved very difficult to reproduce. hence no additional unit test.

> java.lang.IllegalArgumentException: Comparison method violates its general contract!
> ------------------------------------------------------------------------------------
>
>                 Key: AMQ-6016
>                 URL: https://issues.apache.org/jira/browse/AMQ-6016
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.10.0
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>             Fix For: 5.13.0
>
>
> The message group balancing is based on state in the consumer that can be shared across destinations in error. Under load this can lead to:{code}
> 2015-04-13 10:24:20,034 | WARN  | IO Worker 308792 | Service                          | ivemq.broker.TransportConnection  312 | 121 - org.apache.activemq.activemq-osgi - 5.9.0 | Async error occurred: 
> java.lang.IllegalArgumentException: Comparison method violates its general contract!
> 	at java.util.TimSort.mergeHi(TimSort.java:868)[:1.7.0_65]
> 	at java.util.TimSort.mergeAt(TimSort.java:485)[:1.7.0_65]
> 	at java.util.TimSort.mergeCollapse(TimSort.java:410)[:1.7.0_65]
> 	at java.util.TimSort.sort(TimSort.java:214)[:1.7.0_65]
> 	at java.util.TimSort.sort(TimSort.java:173)[:1.7.0_65]
> 	at java.util.Arrays.sort(Arrays.java:659)[:1.7.0_65]
> 	at java.util.Collections.sort(Collections.java:217)[:1.7.0_65]
> 	at org.apache.activemq.broker.region.Queue.addToConsumerList(Queue.java:2131)[121:org.apache.activemq.activemq-osgi:5.9.0]
> 	at org.apache.activemq.broker.region.Queue.doActualDispatch(Queue.java:2067)[121:org.apache.activemq.activemq-osgi:5.9.0]
> 	at org.apache.activemq.broker.region.Queue.doDispatch(Queue.java:1972)[121:org.apache.activemq.activemq-osgi:5.9.0]
> 	at org.apache.activemq.broker.region.Queue.removeSubscription(Queue.java:587)[121:org.apache.activemq.activemq-osgi:5.9.0]
> 	at org.apache.activemq.broker.region.DestinationFilter.removeSubscription(DestinationFilter.java:127)[121:org.apache.activemq.activemq-osgi:5.9.0]
> 	at ......
> 	at java.lang.Thread.run(Thread.java:745)[:1.7.0_65]{code}



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