[ https://issues.apache.org/jira/browse/HIVE-22952?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Zoltan Haindrich resolved HIVE-22952. ------------------------------------- Fix Version/s: 4.0.0 Resolution: Fixed pushed to master. Thank you [~cpugputpu] and David for reviewing the changes! > Use LinkedHashMap in TestStandardObjectInspectors.java > ------------------------------------------------------ > > Key: HIVE-22952 > URL: https://issues.apache.org/jira/browse/HIVE-22952 > Project: Hive > Issue Type: Bug > Components: Test, Tests > Reporter: cpugputpu > Assignee: cpugputpu > Priority: Minor > Labels: pull-request-available > Fix For: 4.0.0 > > Time Spent: 0.5h > Remaining Estimate: 0h > > The test in > _org.apache.hadoop.hive.serde2.objectinspector.TestStandardObjectInspectors#testStandardUnionObjectInspector_ > can fail due to a different iteration order of HashMap. The failure is > presented as follows. > org.junit.ComparisonFailure: > expected:<\{4:{6:"six",7:"seven",8:"eight"}}> > but was:<\{4:{6:"six",8:"eight",7:"seven"}}> > The reason is that the assertion > _assertEquals("\{4:{6:\"six\",7:\"seven\",8:\"eight\"}}", > SerDeUtils.getJSONString(union, uoi1));_ compares a hard-coded string against > the string representation of a JSON object, which is implemented by a > HashMap. To get the string, the HashMap is iterated here at > _serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java:343_ > _for (Object entry : omap.entrySet())_ > 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. In this way, the > non-deterministic behaviour is eliminated and the test will become more > stable. > -- This message was sent by Atlassian Jira (v8.3.4#803005)