Gabriel Reid created HBASE-11110:
------------------------------------

             Summary: Ability to load FilterList class is dependent on context 
classloader
                 Key: HBASE-11110
                 URL: https://issues.apache.org/jira/browse/HBASE-11110
             Project: HBase
          Issue Type: Bug
    Affects Versions: 0.94.19
            Reporter: Gabriel Reid


In the 0.94 branch, the FilterList class contains a static call to 
HBaseConfiguration.create(). This create call in turn adds the needed hbase 
resources to the Configuration object, and sets the classloader of the 
Configuration object to be the context classloader of the current thread (if it 
isn't null).

This approach causes issues if the FilterList class is loaded from a thread 
that has a custom context classloader that doesn't run back up to the main 
application classloader. In this case, HBaseConfiguration.checkDefaultsVersion 
fails because the hbase.defaults.for.version configuration value can't be found 
(because hbase-default.xml can't be found by the custom context classloader).

This is a concrete issue that was discovered via Apache Phoenix within a 
commercial tool, when a (JDBC) connection is opened via a pool, and then passed 
off to a UI thread that has a custom context classloader. The UI thread is then 
the first thing to load FilterList, leading to this issue.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to