From c296f74aaf9c85f6e4ac30ced04563e5159abe32 Mon Sep 17 00:00:00 2001 From: Rich Fecher Date: Fri, 20 Apr 2018 12:47:50 -0400 Subject: [PATCH 1/1] HBASE-20466: Consistently use override mechanism for exempt classes in CoprocessorClassloader --- .../apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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..86a4812 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,12 @@ public class RegionCoprocessorHost cl = CoprocessorHost.class.getClassLoader(); } Thread.currentThread().setContextClassLoader(cl); - cl.loadClass(attr.getClassName()); + 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); } catch (ClassNotFoundException e) { throw new IOException("Class " + attr.getClassName() + " cannot be loaded", e); } finally { -- 2.7.2.windows.1