You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kylin.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2020/03/02 14:05:00 UTC

[jira] [Commented] (KYLIN-4397) Use newLinkedHashMap in AssignmentUtil.java

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

ASF GitHub Bot commented on KYLIN-4397:
---------------------------------------

cpugputpu commented on pull request #1133: KYLIN-4397 Use newLinkedHashMap for deterministic order in AssignmentUtil.java	
URL: https://github.com/apache/kylin/pull/1133
 
 
   This PR aims to solve the issue here: https://issues.apache.org/jira/browse/KYLIN-4397
   
   The fix is to use `newLinkedHashMap` instead of `newHashMap` when initializing a Map. In this way, the non-deterministic behaviour is eliminated and the test will not suffer from the failure again. The code will be more stable.
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> Use newLinkedHashMap in AssignmentUtil.java
> -------------------------------------------
>
>                 Key: KYLIN-4397
>                 URL: https://issues.apache.org/jira/browse/KYLIN-4397
>             Project: Kylin
>          Issue Type: Bug
>            Reporter: cpugputpu
>            Priority: Minor
>
> The tests in _org.apache.kylin.stream.coordinator.assign.DefaultAssignerTest#reBalanceTest_ can fail and the failure is presented as follow.
> _java.lang.AssertionError: expected:<2> but was:<1>_
> _at org.apache.kylin.stream.coordinator.assign.DefaultAssignerTest.reBalanceTest(DefaultAssignerTest.java:165)_ when executing _assertEquals(2, rsAssignment.size());_
>  
> The root cause of this failure is when executing _Map<Integer, Map<String, List<Partition>>> result = assigner.reBalancePlan(rsList, cubes, existingAssignments);_ it will iterate over a HashMap. The stack trace is here:
> java.util.HashMap$EntrySet.iterator(HashMap.java:1014)
>  org.apache.kylin.stream.coordinator.assign.DefaultAssigner.reBalancePlan(DefaultAssigner.java:93)
>  org.apache.kylin.stream.coordinator.assign.DefaultAssignerTest.reBalanceTest(DefaultAssignerTest.java:163)_
> The specification about HashMap says that "this class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time". The documentation is here for your reference: [https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.htm|https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html][l|https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html]
> The fix is to use LinkedHashMap instead of HashMap when initializing a Map. In this way, the non-deterministic behaviour is eliminated and the test will not suffer from the failure again. The code will be more stable.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)