colinsurprenant / redstorm

JRuby on Storm
Other
298 stars 56 forks source link

LoadError when referencing Spouts/Bolts packaged in a gem #107

Closed arielvalentin closed 5 years ago

arielvalentin commented 10 years ago

I tried to write a set of bolts/spouts with the intent of sharing them in multiple topologies. I chose to package them in gems and then reference them in a different project, however the topology fails to load the components when the target project packages additional directories in the jar. I have created a sample project to help reproduce the error here: https://github.com/arielvalentin/redstorm-examples

E.g. Building the topology without any :include_dir works fine:

``` bash```` $> redstorm jar


However adding any additional :include_dir fails with a load error:

``` bash````
$> redstorm jar lib

bash Stacktrace

org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- target/gems/gems/jetstream-core-0.0.1/lib/jetstream/core/my_spout at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1054) ~[stormjar.jar:na] at RUBY.require(jar:file:/var/lib/storm/supervisor/stormdist/ugg-10-1405466035/stormjar.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:36) ~[na:na] at RUBY.initialize(/home/midpoint/.gem/jruby/1.9.3/gems/redstorm-0.6.6/lib/red_storm/proxy/spout.rb:38) ~[na:na] at backtype.storm.daemon.executor$eval3848$fn3849$fn3864.invoke(executor.clj:519) ~[na:na]

colinsurprenant commented 10 years ago

Thanks for making this reproducible. Not sure what is going on but shouldn't be too hard to figure out.

cmw commented 9 years ago

Are there any pointers on this topic? I'm facing the same issue with two bolts, defined inside my topology file. It complains that it can't load the topology file itself to instanciate the bolts (but it obviously works fine for the topology).

org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- user_story_topology
at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072)
at RUBY.require(/storm-local/supervisor/stormdist/user_story_topology-16-1434707409/stormjar.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54)
at RUBY.(root)(<script>:1) at backtype.storm.daemon.executor$fn__6647$fn__6659.invoke(executor.clj:692)
at backtype.storm.util$async_loop$fn__459.invoke(util.clj:461)