Github user aertoria commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/292#discussion_r170387933
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/expression/function/UDFExpression.java
---
@@ -198,18 +199,26 @@ public static DynamicClassLoader getClassLoader(final
PName tenantId, final Stri
}
return cl;
} else {
- cl = pathSpecificCls.get(jarPath);
- if (cl == null) {
- Configuration conf = HBaseConfiguration.create(config);
- conf.set(DYNAMIC_JARS_DIR_KEY, parent);
- cl = new DynamicClassLoader(conf,
UDFExpression.class.getClassLoader());
- }
- // Cache class loader as a weak value, will be GC'ed when no
reference left
- DynamicClassLoader prev = pathSpecificCls.putIfAbsent(jarPath,
cl);
- if (prev != null) {
- cl = prev;
+ String rawPath = new
Path(config.get(DYNAMIC_JARS_DIR_KEY)).toUri().getRawPath();
+ // jarPath is provided as an HDFS URI without scheme and
authority, but the jar is inside the configured hbase.dynamic.jars.dir
+ if(rawPath.equals(parent)) {
--- End diff --
This if block seems will never be reachable. See line 188. Aren't these
two condition equivalent?
---