You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Alexander Pivovarov (JIRA)" <ji...@apache.org> on 2015/04/08 21:52:14 UTC

[jira] [Commented] (HIVE-3241) GenericUDAF when packaged as a JAR raises IllegalAccessException unless the JAR is placed in lib dir

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

Alexander Pivovarov commented on HIVE-3241:
-------------------------------------------

"Mode mode" does not have any access modified. So, it is not protected, it's "default" from the day it was added.
https://github.com/apache/hive/commit/f376e632ce4796e4ffb740434b3cfcdae590a1ec#diff-fa86fb58b7827b5e9569d609e8a0eac0

Because mode field is used by Subclasses it should be protected (not "default")
GenericUDAFEvaluator subclasses can access mode field because they are located in the same package as GenericUDAFEvaluator.

But protected modifier is better because it clearly says that the field can be accessed by child classes


> GenericUDAF when packaged as a JAR raises IllegalAccessException unless the JAR is placed in lib dir
> ----------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-3241
>                 URL: https://issues.apache.org/jira/browse/HIVE-3241
>             Project: Hive
>          Issue Type: Bug
>          Components: UDF
>    Affects Versions: 0.9.0
>            Reporter: Shreepadma Venugopalan
>         Attachments: compute-stats.jar
>
>
> GenericUDAFEvaluator has a member variable "Mode" which is protected. Accessing mode in a GenericUDAF class raises IllegalAccessException when packaged as a jar. This looks like a class loader issue because the error doesn't occur when the jar is placed in HIVE_LIB directory. The fix for this issue is to provide public getters for member variable mode in GenericUDAFEvaluator.
> Steps to reproduce,
> Copy the attached jar to a dir other than HIVE_LIB
> On a hive shell,
> add jar <path-to-jar>
> create temporary function compute_stats as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFComputeStats';
>  select compute_stats(some_col) from some_table;



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)