kylin-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (Jira)" <j...@apache.org>
Subject [jira] [Commented] (KYLIN-4397) Use newLinkedHashMap in AssignmentUtil.java
Date Thu, 26 Mar 2020 07:51:00 GMT

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

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

shaofengshi commented on pull request #1133: KYLIN-4397 Use newLinkedHashMap for deterministic
order in AssignmentUtil.java	
URL: https://github.com/apache/kylin/pull/1133
 
 
   
 
----------------------------------------------------------------
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
>            Assignee: 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)

Mime
View raw message