You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Zoltan Haindrich (Jira)" <ji...@apache.org> on 2020/07/09 06:29:00 UTC
[jira] [Resolved] (HIVE-22952) Use LinkedHashMap in
TestStandardObjectInspectors.java
[ 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)