[ https://issues.apache.org/jira/browse/HIVE-28603?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dmitriy Fingerman resolved HIVE-28603. -------------------------------------- Fix Version/s: 4.1.0 Resolution: Fixed Thanks for your contribution, [~nikunjagarwal321] ! > Multiple tests in serde module are flaky > ---------------------------------------- > > Key: HIVE-28603 > URL: https://issues.apache.org/jira/browse/HIVE-28603 > Project: Hive > Issue Type: Improvement > Security Level: Public(Viewable by anyone) > Components: Serializers/Deserializers, Tests > Affects Versions: 4.0.1 > Reporter: Nikunj Agarwal > Assignee: Nikunj Agarwal > Priority: Minor > Labels: flaky-test, pull-request-available, serde, test > Fix For: 4.1.0 > > Attachments: Screenshot 2024-11-02 at 2.48.35 PM.png, Screenshot > 2024-11-02 at 2.54.31 PM.png > > > There are multiple tests in serde module which are flaky. > h2. Flakiness in the tests - > A tool called [nondex|https://github.com/TestingResearchIllinois/NonDex] was > used to identify the flaky tests. NonDex is a tool for detecting and > debugging wrong assumptions on under-determined Java APIs. > h2. Steps to reproduce flakiness using nondex - > > {code:java} > mvn install -pl serde -DskipTests > mvn -pl serde test > -Dtest=org.apache.hadoop.hive.serde2.objectinspector.TestProtocolBuffersObjectInspectors#testProtocolBuffersObjectInspectors > mvn -pl serde edu.illinois:nondex-maven-plugin:2.1.7:nondex > -Dtest=org.apache.hadoop.hive.serde2.objectinspector.TestProtocolBuffersObjectInspectors#testProtocolBuffersObjectInspectors > {code} > h3. ERROR logs: > > {code:java} > [ERROR] Failures: > [ERROR] > TestProtocolBuffersObjectInspectors.testProtocolBuffersObjectInspectors:71 > expected:<test> but was:<[one, two]>{code} > > > Similar Errors were found across different test cases across different > classes. The list of test cases is as follows: > |org.apache.hadoop.hive.serde2.objectinspector.TestProtocolBuffersObjectInspectors.testProtocolBuffersObjectInspectors| > |org.apache.hadoop.hive.serde2.objectinspector.TestThriftObjectInspectors.testThriftObjectInspectors| > |org.apache.hadoop.hive.serde2.objectinspector.TestReflectionObjectInspectors.testReflectionObjectInspectors| > |org.apache.hadoop.hive.serde2.columnar.TestLazyBinaryColumnarSerDe.testLazyBinaryColumnarSerDeWithEmptyBinary| > |org.apache.hadoop.hive.serde2.columnar.TestLazyBinaryColumnarSerDe.testSerDeInnerNulls| > |org.apache.hadoop.hive.serde2.lazybinary.TestLazyBinarySerDe.testLazyBinarySerDe| > |org.apache.hadoop.hive.serde2.TestStatsSerde.testLazyBinarySerDe| > |org.apache.hadoop.hive.serde2.lazy.TestLazySimpleSerDe#testSerDeParameters| > |org.apache.hadoop.hive.serde2.binarysortable.TestBinarySortableSerDe#testBinarySortableSerDe| > > h2. Reason for failure : > The method *_getDeclaredNonStaticFields(Class<?> c)_* in class > _*ObjectInspectorUtils.java*_ ** uses class.getDeclaredFields() method which > is nondeterministic as per [java > docs|https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getDeclaredFields--]. > > {quote} Field[] f = c.getDeclaredFields(); > {quote} > As per the test cases, it is assumed that the return order of the fields will > always be the same, which may not be the case. > > h2. Proposed Fix : > Ideally we should make the getDeclaredNonStaticFields() function > deterministic, which is not the case as of now. -- This message was sent by Atlassian Jira (v8.20.10#820010)