You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Kokila N (Jira)" <ji...@apache.org> on 2025/04/22 17:36:00 UTC

[jira] [Commented] (HIVE-28643) Test failures with "Error getting slot value"

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

Kokila N commented on HIVE-28643:
---------------------------------

In JDK8  
{code:java}
Field.class.getDeclaredField("slot");{code}
 ** returns the slot attribute which is present Field.java .

In JDK 17, we get 
{code:java}
Exception in thread "main" java.lang.NoSuchFieldException: slot{code}
even though the attribute slot is present in Field.java .

 

The reason is that the Reflection.java class has *fieldFilterMap* which consists *Field.class, ALL_MEMBERS* meaning they are filtered. For this reason, none of the attributes of {{Field}} are accessible via reflection!
 
{code:java}
    static {
        fieldFilterMap = Map.of(
            Reflection.class, ALL_MEMBERS,
            AccessibleObject.class, ALL_MEMBERS,
            Class.class, Set.of("classLoader", "classData"),
            ClassLoader.class, ALL_MEMBERS,
            Constructor.class, ALL_MEMBERS,
            Field.class, ALL_MEMBERS,
            Method.class, ALL_MEMBERS,
            Module.class, ALL_MEMBERS,
            System.class, Set.of("security")
        );
        methodFilterMap = Map.of();
    }{code}

ref: [https://github.com/openjdk/jdk/blob/0438cea65b927bcf3d039b290de7fd7c60a06922/src/java.base/share/classes/jdk/internal/reflect/Reflection.java#L51] 

> Test failures with "Error getting slot value"
> ---------------------------------------------
>
>                 Key: HIVE-28643
>                 URL: https://issues.apache.org/jira/browse/HIVE-28643
>             Project: Hive
>          Issue Type: Sub-task
>            Reporter: Kokila N
>            Assignee: Kokila N
>            Priority: Major
>
> The solution utilizes the *slot* variable in the *Field* object to maintain the order, which helps prevent flaky tests in serde module. However, with JDK 17, all tests that rely on this slot are failing with the error: "java.lang.RuntimeException: Error getting a slot value".
> Debugging reveals a NoSuchFieldException, despite the fact that JDK 17 includes the slot variable. This issue is likely related to reflection, even though the --add-opens flag is used to allow access to private fields.
> Currently reverting the commit to move forward , need to address this issue later.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)