Nick Allen created METRON-1916:
----------------------------------
Summary: Stellar Classpath Function Resolver Should Handle
ClassNotFoundException
Key: METRON-1916
URL: https://issues.apache.org/jira/browse/METRON-1916
Project: Metron
Issue Type: Improvement
Reporter: Nick Allen
Assignee: Nick Allen
Stellar can be executed in an environment where not all of the dependencies are
available for each of the functions provided in Stellar Common. When this
happens, the classpath resolver blows-up even if you do not use the function
that is missing dependencies.
For example this exception is thrown when not all of the dependencies are
available for the new REST function.
{code:java}
2018-11-30 15:58:59 ERROR BaseFunctionResolver:243 - Unable to load
org.apache.metron.stellar.dsl.functions.RestFunctions$RestGet because
org/apache/http/conn/HttpClientConnectionManager
java.lang.NoClassDefFoundError: org/apache/http/conn/HttpClientConnectionManager
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.getConstructor(Class.java:1825)
at
org.apache.metron.stellar.dsl.functions.resolver.BaseFunctionResolver.createFunction(BaseFunctionResolver.java:240)
at
org.apache.metron.stellar.dsl.functions.resolver.BaseFunctionResolver.resolveFunction(BaseFunctionResolver.java:194)
at
org.apache.metron.stellar.dsl.functions.resolver.BaseFunctionResolver.resolveFunctions(BaseFunctionResolver.java:166)
at com.google.common.base.Suppliers$MemoizingSupplier.get(Suppliers.java:109)
at
org.apache.metron.stellar.dsl.functions.resolver.BaseFunctionResolver.apply(BaseFunctionResolver.java:149)
at
org.apache.metron.stellar.dsl.functions.resolver.BaseFunctionResolver.apply(BaseFunctionResolver.java:49)
at
org.apache.metron.stellar.common.StellarCompiler.resolveFunction(StellarCompiler.java:688)
at
org.apache.metron.stellar.common.StellarCompiler.lambda$exitTransformationFunc$13(StellarCompiler.java:656)
at
org.apache.metron.stellar.common.StellarCompiler$Expression.apply(StellarCompiler.java:259)
at
org.apache.metron.stellar.common.BaseStellarProcessor.parse(BaseStellarProcessor.java:151)
at
org.apache.metron.stellar.common.DefaultStellarStatefulExecutor.execute(DefaultStellarStatefulExecutor.java:160)
at
org.apache.metron.stellar.common.DefaultStellarStatefulExecutor.assign(DefaultStellarStatefulExecutor.java:95)
at
org.apache.metron.profiler.DefaultProfileBuilder.assign(DefaultProfileBuilder.java:291)
at
org.apache.metron.profiler.DefaultProfileBuilder.apply(DefaultProfileBuilder.java:136)
at
org.apache.metron.profiler.DefaultMessageDistributor.distribute(DefaultMessageDistributor.java:177)
at
org.apache.metron.profiler.storm.ProfileBuilderBolt.handleMessage(ProfileBuilderBolt.java:411)
at
org.apache.metron.profiler.storm.ProfileBuilderBolt.execute(ProfileBuilderBolt.java:337)
at
org.apache.storm.topology.WindowedBoltExecutor$1.onActivation(WindowedBoltExecutor.java:307)
at org.apache.storm.windowing.WindowManager.onTrigger(WindowManager.java:145)
at
org.apache.storm.windowing.WatermarkTimeTriggerPolicy.handleWaterMarkEvent(WatermarkTimeTriggerPolicy.java:80)
at
org.apache.storm.windowing.WatermarkTimeTriggerPolicy.track(WatermarkTimeTriggerPolicy.java:48)
at org.apache.storm.windowing.WindowManager.track(WindowManager.java:177)
at org.apache.storm.windowing.WindowManager.add(WindowManager.java:110)
at
org.apache.storm.windowing.WaterMarkEventGenerator.run(WaterMarkEventGenerator.java:80)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException:
org.apache.http.conn.HttpClientConnectionManager
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 35 more{code}
When this happens the Classpath Function Resolver should allow me to use
whichever functions can be loaded correctly.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)