[ https://issues.apache.org/jira/browse/HBASE-13583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16505600#comment-16505600 ]
Mike Drob commented on HBASE-13583: ----------------------------------- v2: get something that actually works! manually verified that there are class files corresponding to the ruby source in our hbase-shell jar. We end up including both the .rb and .class files, which might be ok for now? Can circle back to that later. It's actually much worse than what you suggested, [~busbey]. Checked the classpath with {{mvn -X}} and saw that we have asm 3.1 in use. I tried using a newer version of asm both asm:asm:3.3.1 (the latest version in the asm:asm coordinate space) and org.ow2.asm:asm-all:5.0.4 (the version jruby is using) and they fail with: {noformat} [INFO] TypeError: failed to coerce org.objectweb.asm.ClassWriter to org.jruby.org.objectweb.asm.ClassVisitor [INFO] block in compile_files_with_options at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/jruby/compiler.rb:189 [INFO] block in compile_files_with_options at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/jruby/compiler.rb:291 [INFO] each at org/jruby/RubyArray.java:1734 [INFO] block in compile_files_with_options at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/jruby/compiler.rb:290 [INFO] each at org/jruby/RubyArray.java:1734 [INFO] compile_files_with_options at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/jruby/compiler.rb:281 [INFO] compile_argv at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/jruby/compiler.rb:94 [INFO] <main> at -e:3 {noformat} which led me to https://github.com/jruby/jruby/issues/2887 that suggest using shaded and unshaded asm in the same classpath will lead to a world of trouble. So... I looked at the dependency tree and noted that we're pulling asm 3.1 via jersey-server via a bunch of hadoop libs, so we can exclude that in dependency management. And in hadoop-3, we're pulling in a different asm, so out that goes as well. Should file another JIRA to see what else we can prune from that dependency list, because it looks really long and full of hadoop stuff that I'm sure we don't need. Removing MR entries for now since those obviously don't belong, but leaving the rest because I don't want too invasive of a change. > AOT compile our JRuby > --------------------- > > Key: HBASE-13583 > URL: https://issues.apache.org/jira/browse/HBASE-13583 > Project: HBase > Issue Type: Improvement > Components: build, scripts, shell > Reporter: Nick Dimiduk > Assignee: Mike Drob > Priority: Major > Attachments: HBASE-13583.patch, HBASE-13583.v2.patch > > > Our Jruby code seems to not keep up well with Java changes. We should > investigate adding a compilation step for our shell and the rb scripts in bin > to ensure they're calling methods that exist on classes that exist. This > looks like as good a starting point as any: > https://github.com/jruby/jruby/wiki/GeneratingJavaClasses -- This message was sent by Atlassian JIRA (v7.6.3#76005)