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

nichunen reassigned KYLIN-4386:
-------------------------------

    Assignee: cpugputpu

> Use LinkedHashMap for a deterministic order in test
> ---------------------------------------------------
>
>                 Key: KYLIN-4386
>                 URL: https://issues.apache.org/jira/browse/KYLIN-4386
>             Project: Kylin
>          Issue Type: Bug
>          Components: Tools, Build and Test
>            Reporter: cpugputpu
>            Assignee: cpugputpu
>            Priority: Minor
>              Labels: pull-request-available
>
> The tests in 
> _org.apache.kylin.stream.coordinator.CoordinatorTest#testReassignFailOnStartNew_
>  and 
> _org.apache.kylin.stream.coordinator.CoordinatorTest#testReassignFailOnStopAndSync_
>  will fail when making the following assertions:
> _assertSame(ClusterStateException.ClusterState.ROLLBACK_FAILED, 
> rune.getClusterState());_
>  _assertSame(ClusterStateException.TransactionStep.STOP_AND_SNYC, 
> rune.getTransactionStep());_
> The failure is reported as follows:
> java.lang.Exception: Unexpected exception, 
> expected<org.apache.kylin.stream.coordinator.exception.ClusterStateException>
> but was<java.lang.AssertionError>
> at 
> org.apache.kylin.stream.coordinator.CoordinatorTest.testReassignFailOnStartNew(CoordinatorTest.java:271)
> After my analysis, I find that the root cause is that the variable 
> _newAssignMap_ is a HashMap, which makes no guarantee about the order when 
> iterating in 
> _org.apache.kylin.stream.coordinator.Coordinator.doReassign(Coordinator.java:516)_
> 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.html]
>  
> The fix is to use LinkedHashMap instead of HashMap so that the 
> non-deterministic behaviour is eliminated. It will not affect the performance 
> and can make the tests more stable.
>  



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

Reply via email to