You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kylin.apache.org by "Xiaoxiang Yu (Jira)" <ji...@apache.org> on 2020/07/31 12:12:00 UTC
[jira] [Closed] (KYLIN-4327) TOPN Comparator may violate its
general contract
[ https://issues.apache.org/jira/browse/KYLIN-4327?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xiaoxiang Yu closed KYLIN-4327.
-------------------------------
Resolved in release 3.1.0 (2020-07-03)
> TOPN Comparator may violate its general contract
> -------------------------------------------------
>
> Key: KYLIN-4327
> URL: https://issues.apache.org/jira/browse/KYLIN-4327
> Project: Kylin
> Issue Type: Improvement
> Reporter: Yifei Wu
> Assignee: Yifei Wu
> Priority: Minor
> Fix For: v3.1.0, v3.0.1
>
>
> in current TopN, it should save top(k) result and keep it in double value, just like this:
> ```
> public class Counter<T> implements Serializable{
> ...
> protected T item;
> protected double count;
> ...
> }
> ```
> But its Comparator method use "==" directly to compare the result, it may cause the error "*violate its general contract*" when calling it.
> ```
> private static final Comparator ASC_COMPARATOR = new Comparator<Counter>() {
> @Override
> public int compare(Counter o1, Counter o2) {
> return o1.getCount() > o2.getCount() ? 1 : o1.getCount() == o2.getCount() ? 0 : -1;
> }
> };
> ```
--
This message was sent by Atlassian Jira
(v8.3.4#803005)