Vaibhav Gumashta created HIVE-11408:
---------------------------------------

             Summary: HiveServer2 is leaking ClassLoaders when add jar / 
temporary functions are used
                 Key: HIVE-11408
                 URL: https://issues.apache.org/jira/browse/HIVE-11408
             Project: Hive
          Issue Type: Bug
          Components: HiveServer2
    Affects Versions: 0.14.0
            Reporter: Vaibhav Gumashta
            Assignee: Vaibhav Gumashta


I'm able to reproduce with 0.14. I'm yet to see if HIVE-10453 fixes the issue 
(since it's on top of a larger patch: HIVE-2573 that was added in 1.2). 

Basically, add jar creates a new classloader for loading the classes from the 
new jar and adds the new classloader to the SessionState object of user's 
session, making the older one its parent. Creating a temporary function uses 
the new classloader to load the class used for the function. On closing a 
session, although there is code to close the classloader for the session, I'm 
not seeing the new classloader getting GCed and from the heapdump I can see it 
holds on to the temporary function's class that should have gone away after the 
session close. 

Steps to reproduce:
1.
{code}
jdbc:hive2://localhost:10000/> add jar hdfs:///tmp/audf.jar;
{code}


2. 
Use a profiler (I'm using yourkit) to verify that a new URLClassLoader was 
added.


3. 
{code}
jdbc:hive2://localhost:10000/> CREATE TEMPORARY FUNCTION funcA AS 
'org.gumashta.udf.AUDF'; 
{code}


4. 
Take the memory snapshot and verify that the new URLClassLoader is indeed there 
and is holding onto the class it loaded (org.gumashta.udf.AUDF).






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

Reply via email to