Repository: hbase Updated Branches: refs/heads/master e73ba582f -> a8be3bb81
HBASE-20466 Consistently use override mechanism for exempt classes in CoprocessorClassloader Signed-off-by: tedyu <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a8be3bb8 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a8be3bb8 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a8be3bb8 Branch: refs/heads/master Commit: a8be3bb814378805a1b5eae85826c9eff3768534 Parents: e73ba58 Author: Rich Fecher <[email protected]> Authored: Fri Apr 20 12:47:50 2018 -0400 Committer: tedyu <[email protected]> Committed: Mon Apr 23 07:47:30 2018 -0700 ---------------------------------------------------------------------- .../hbase/regionserver/RegionCoprocessorHost.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/a8be3bb8/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java index d73c012..dea13ca 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java @@ -36,6 +36,7 @@ import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CompareOperator; import org.apache.hadoop.hbase.HBaseConfiguration; +import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.RawCellBuilder; import org.apache.hadoop.hbase.RawCellBuilderFactory; import org.apache.hadoop.hbase.ServerName; @@ -350,7 +351,16 @@ public class RegionCoprocessorHost cl = CoprocessorHost.class.getClassLoader(); } Thread.currentThread().setContextClassLoader(cl); - cl.loadClass(attr.getClassName()); + if (cl instanceof CoprocessorClassLoader) { + String[] includedClassPrefixes = null; + if (conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY) != null) { + String prefixes = attr.conf.get(HConstants.CP_HTD_ATTR_INCLUSION_KEY); + includedClassPrefixes = prefixes.split(";"); + } + ((CoprocessorClassLoader)cl).loadClass(attr.getClassName(), includedClassPrefixes); + } else { + cl.loadClass(attr.getClassName()); + } } catch (ClassNotFoundException e) { throw new IOException("Class " + attr.getClassName() + " cannot be loaded", e); } finally {
