Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Process hangs when requiring yaml under compat-version 2.0 on JRuby 1.7.27 #4613

Open
camlow325 opened this issue May 18, 2017 · 6 comments
Open

Comments

@camlow325
Copy link
Contributor

camlow325 commented May 18, 2017

Environment

Provide at least:

  • JRuby version (jruby -v) and command line (flags, JRUBY_OPTS, etc)

jruby 1.7.27 (1.9.3p551) 2017-05-11 8cdb01a on Java HotSpot(TM) 64-Bit Server VM 1.8.0_45-b14 +jit [darwin-x86_64]

  • Operating system and platform (e.g. uname -a)

macOS Sierra, CentOS 7

Expected Behavior

  • Describe your expectation of how JRuby should behave, perhaps by showing how CRuby/MRI behaves.

Requiring and using the yaml library should work.

  • Provide an executable Ruby script or a link to an example repository.

When I run the following under JRuby 1.7.26...

jruby -J-Djruby.compat.version=2.0 -ryaml -e "puts YAML::VERSION"

... the command returns the version and exits properly:

2.0.14

Actual Behavior

  • Describe or show the actual behavior.

When I run the jruby command from above on JRuby 1.7.27, the command hangs indefinitely. I waited several minutes before killing the process. The process has hung on every attempt I've made.

Note that the command completes successfully (without hanging) if I run it under the default compatibility version, 1.9 (with or without setting the -Djruby.compat.version property).

> jruby -J-Djruby.compat.version=1.9 -ryaml -e "puts YAML::VERSION"
2.0.14
  • Provide text or screen capture showing the behavior.

Here is a stack trace on the hanging thread:

"main" #1 prio=5 os_prio=31 tid=0x00007fdd03003800 nid=0x1b03 runnable [0x000070000f6a8000]
   java.lang.Thread.State: RUNNABLE
	at org.jruby.RubyModule.fetchConstant(RubyModule.java:3498)
	at org.jruby.RubyModule.iterateConstantNoConstMissing(RubyModule.java:3062)
	at org.jruby.RubyModule.getConstantNoConstMissing(RubyModule.java:3039)
	at org.jruby.RubyModule.getConstant(RubyModule.java:3013)
	at org.jruby.RubyModule.const_get_2_0(RubyModule.java:2678)
	at org.jruby.RubyModule$INVOKER$i$0$1$const_get_2_0.call(RubyModule$INVOKER$i$0$1$const_get_2_0.gen)
	at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:667)
	at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
	at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
	at org.jruby.ast.ArrayNode.interpretPrimitive(ArrayNode.java:94)
	at org.jruby.ast.ArrayNode.interpret(ArrayNode.java:84)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
	at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
	at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
	at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
	at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
	at org.jruby.runtime.Block.yield(Block.java:142)
	at org.jruby.RubyArray.collect(RubyArray.java:2400)
	at org.jruby.RubyArray.map19(RubyArray.java:2414)
	at org.jruby.RubyArray$INVOKER$i$0$0$map19.call(RubyArray$INVOKER$i$0$0$map19.gen)
	at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:316)
	at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:145)
	at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)
	at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
	at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)
	at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
	at org.jruby.ast.ConstDeclNode.interpret(ConstDeclNode.java:98)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_CLASS(ASTInterpreter.java:103)
	at org.jruby.evaluator.ASTInterpreter.evalClassDefinitionBody(ASTInterpreter.java:280)
	at org.jruby.ast.ClassNode.interpret(ClassNode.java:138)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_CLASS(ASTInterpreter.java:103)
	at org.jruby.evaluator.ASTInterpreter.evalClassDefinitionBody(ASTInterpreter.java:280)
	at org.jruby.ast.ModuleNode.interpret(ModuleNode.java:120)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RootNode.interpret(RootNode.java:129)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)
	at org.jruby.Ruby.runInterpreter(Ruby.java:884)
	at org.jruby.Ruby.loadFile(Ruby.java:2837)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.loadScript(LibrarySearcher.java:264)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:252)
	at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:51)
	at org.jruby.runtime.load.LoadService.tryLoadingLibraryOrScript(LoadService.java:892)
	at org.jruby.runtime.load.LoadService.requireCommon(LoadService.java:465)
	at org.jruby.runtime.load.LoadService.require(LoadService.java:414)
	at org.jruby.RubyKernel.requireCommon(RubyKernel.java:1047)
	at org.jruby.RubyKernel.require19(RubyKernel.java:1040)
	at org.jruby.RubyKernel$INVOKER$s$1$0$require19.call(RubyKernel$INVOKER$s$1$0$require19.gen)
	at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
	at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.ReturnNode.interpret(ReturnNode.java:92)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.IfNode.interpret(IfNode.java:116)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
	at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
	at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
	at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:203)
	at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RootNode.interpret(RootNode.java:129)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)
	at org.jruby.Ruby.runInterpreter(Ruby.java:884)
	at org.jruby.Ruby.loadFile(Ruby.java:2837)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.loadScript(LibrarySearcher.java:264)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:252)
	at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:51)
	at org.jruby.runtime.load.LoadService.tryLoadingLibraryOrScript(LoadService.java:892)
	at org.jruby.runtime.load.LoadService.requireCommon(LoadService.java:465)
	at org.jruby.runtime.load.LoadService.require(LoadService.java:414)
	at org.jruby.RubyKernel.requireCommon(RubyKernel.java:1047)
	at org.jruby.RubyKernel.require19(RubyKernel.java:1040)
	at org.jruby.RubyKernel$INVOKER$s$1$0$require19.call(RubyKernel$INVOKER$s$1$0$require19.gen)
	at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
	at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.ReturnNode.interpret(ReturnNode.java:92)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.IfNode.interpret(IfNode.java:116)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
	at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
	at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
	at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:203)
	at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RootNode.interpret(RootNode.java:129)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)
	at org.jruby.Ruby.runInterpreter(Ruby.java:884)
	at org.jruby.Ruby.loadFile(Ruby.java:2837)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.loadScript(LibrarySearcher.java:264)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:252)
	at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:51)
	at org.jruby.runtime.load.LoadService.tryLoadingLibraryOrScript(LoadService.java:892)
	at org.jruby.runtime.load.LoadService.requireCommon(LoadService.java:465)
	at org.jruby.runtime.load.LoadService.require(LoadService.java:414)
	at org.jruby.RubyKernel.requireCommon(RubyKernel.java:1047)
	at org.jruby.RubyKernel.require19(RubyKernel.java:1040)
	at org.jruby.RubyKernel$INVOKER$s$1$0$require19.call(RubyKernel$INVOKER$s$1$0$require19.gen)
	at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
	at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.ReturnNode.interpret(ReturnNode.java:92)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.IfNode.interpret(IfNode.java:116)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
	at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
	at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
	at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:203)
	at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RootNode.interpret(RootNode.java:129)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)
	at org.jruby.Ruby.runInterpreter(Ruby.java:884)
	at org.jruby.Ruby.loadFile(Ruby.java:2837)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.loadScript(LibrarySearcher.java:264)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:252)
	at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:51)
	at org.jruby.runtime.load.LoadService.tryLoadingLibraryOrScript(LoadService.java:892)
	at org.jruby.runtime.load.LoadService.requireCommon(LoadService.java:465)
	at org.jruby.runtime.load.LoadService.require(LoadService.java:414)
	at org.jruby.RubyKernel.requireCommon(RubyKernel.java:1047)
	at org.jruby.RubyKernel.require19(RubyKernel.java:1040)
	at org.jruby.RubyKernel$INVOKER$s$1$0$require19.call(RubyKernel$INVOKER$s$1$0$require19.gen)
	at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
	at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.ReturnNode.interpret(ReturnNode.java:92)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.IfNode.interpret(IfNode.java:116)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
	at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
	at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
	at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:203)
	at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
	at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
	at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RootNode.interpret(RootNode.java:129)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)
	at org.jruby.Ruby.runInterpreter(Ruby.java:884)
	at org.jruby.Ruby.loadFile(Ruby.java:2837)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.loadScript(LibrarySearcher.java:264)
	at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:252)
	at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:51)
	at org.jruby.runtime.load.LoadService.tryLoadingLibraryOrScript(LoadService.java:892)
	at org.jruby.runtime.load.LoadService.requireCommon(LoadService.java:465)
	at org.jruby.runtime.load.LoadService.require(LoadService.java:414)
	at org.jruby.RubyKernel.requireCommon(RubyKernel.java:1047)
	at org.jruby.RubyKernel.require19(RubyKernel.java:1040)
	at org.jruby.RubyKernel$INVOKER$s$1$0$require19.call(RubyKernel$INVOKER$s$1$0$require19.gen)
	at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
	at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
	at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
	at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
	at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
	at org.jruby.ast.ReturnNode.interpret(ReturnNode.java:92)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.IfNode.interpret(IfNode.java:116)
	at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
	at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
	at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
	at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
	at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
	at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
	at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:203)
	at org.jruby.RubyClass.finvoke(RubyClass.java:739)
	at org.jruby.runtime.Helpers.invoke(Helpers.java:505)
	at org.jruby.RubyBasicObject.callMethod(RubyBasicObject.java:364)
	at org.jruby.Ruby.init(Ruby.java:1295)
	at org.jruby.Ruby.newInstance(Ruby.java:334)
	at org.jruby.Main.internalRun(Main.java:256)
	at org.jruby.Main.run(Main.java:217)
	at org.jruby.Main.main(Main.java:197)
@camlow325 camlow325 changed the title Process hangs when requiring yaml under compat-version 2.0 on JRuby 1.7.26 Process hangs when requiring yaml under compat-version 2.0 on JRuby 1.7.27 May 18, 2017
@camlow325
Copy link
Contributor Author

From doing some git bisecting, it appears that the problem originates with 45047a.

@kares
Copy link
Member

kares commented May 19, 2017

unfortunately auto-loading was never done "right" on JRuby 1.7.x ... and since its EOL it might just stay as is

camlow325 added a commit to camlow325/jruby that referenced this issue May 19, 2017
Fix for jruby#4613, an infinite loop in module name parsing logic which
had been introduced into RubyModule.const_get_2_0 in 45047a.
@camlow325
Copy link
Contributor Author

I found a possible fix for this, submitted in PR #4614. With this change, the error no longer occurs for me.

@enebo
Copy link
Member

enebo commented May 19, 2017

@camlow325 It is great you dug in and figured this out but we just EOLd 1.7.x. Another point is that our --2.0 has always been an experimental feature of 1.7.x so we stopped working on it a long time ago. Have you tried 9.1.9.0? It is a Ruby 2.3 impl which pretty robust now.

@camlow325
Copy link
Contributor Author

camlow325 commented May 22, 2017

@enebo Thanks for the response. Yeah, we've tried out JRuby 9k, including 9.1.9.0, and agree that this is definitely the direction we want to go in the future for Ruby 2.x language support. We've only continued supporting our users on JRuby 1.7.x because of some issues we'd reported previously here, #4112 (comment). We're continuing to work on our JRuby 9k migration, though, and very much have appreciated the community's help along the way. In the event that you might have to do another JRuby 1.7.x roll, I think it might be nice to include the fix from the attached PR if it seems reasonable. Thanks again for your help!

camlow325 added a commit to camlow325/jruby-utils that referenced this issue May 25, 2017
This commit removes support for the compat-version setting from
jruby-utils.  The compat-version setting was introduced in jruby-utils
version 0.4.0 to allow for JRuby 1.7 to optionally run under Ruby
language version 2.0 instead of the default version, 1.9.  JRuby
1.7.27 effectively breaks the ability to use Ruby language version
2.0, however, due to a regression - see:
jruby/jruby#4613 - and is unlikely to be
fixed in the future.  JRuby 9k also does not support compat-version
configurability.  Now that jruby-utils can be used with
JRuby 9k for Ruby language 2+ support, it is no longer valuable to be
able to set compat-version to 2 for use with JRuby 1.7.

This commit effectively fixes JRuby 1.7 to always use Ruby language
version 1.9 - as was the case before jruby-utils version 0.4.0.
jruby-utils will now have to be used with JRuby 9k for Ruby language
2+ version support.
camlow325 added a commit to camlow325/jruby-utils that referenced this issue May 25, 2017
This commit removes support for the compat-version setting from
jruby-utils.  The compat-version setting was introduced in jruby-utils
version 0.4.0 to allow for JRuby 1.7 to optionally run under Ruby
language version 2.0 instead of the default version, 1.9.  JRuby
1.7.27 effectively breaks the ability to use Ruby language version
2.0, however, due to a regression - see:
jruby/jruby#4613 - and is unlikely to be
fixed in the future.  JRuby 9k also does not support compat-version
configurability.  Now that jruby-utils can be used with
JRuby 9k for Ruby language 2+ support, it is no longer valuable to be
able to set compat-version to 2 for use with JRuby 1.7.

This commit effectively fixes JRuby 1.7 to always use Ruby language
version 1.9 - as was the case before jruby-utils version 0.4.0.
jruby-utils will now have to be used with JRuby 9k for Ruby language
2+ version support.
camlow325 added a commit to camlow325/jruby-utils that referenced this issue May 25, 2017
This commit removes support for the compat-version setting from
jruby-utils.  The compat-version setting was introduced in jruby-utils
version 0.4.0 to allow for JRuby 1.7 to optionally run under Ruby
language version 2.0 instead of the default version, 1.9.  JRuby
1.7.27 effectively breaks the ability to use Ruby language version
2.0, however, due to a regression - see:
jruby/jruby#4613 - and is unlikely to be
fixed in the future.  JRuby 9k also does not support compat-version
configurability.  Now that jruby-utils can be used with
JRuby 9k for Ruby language 2+ support, it is no longer valuable to be
able to set compat-version to 2 for use with JRuby 1.7.

This commit effectively fixes JRuby 1.7 to always use Ruby language
version 1.9 - as was the case before jruby-utils version 0.4.0.
jruby-utils will now have to be used with JRuby 9k for Ruby language
2+ version support.
camlow325 added a commit to camlow325/puppetserver that referenced this issue May 25, 2017
This commit removes support for the jruby-puppet.compat-version setting.
The compat-version setting was introduced in Puppet Server 2.7.0 to
allow for JRuby to run under Ruby language version 2.0 instead of the
default version, 1.9.  Setting compat-version to "2.0" for JRuby 1.7.27,
however, was broken due to a regression - see:
jruby/jruby#4613 - and is unlikely to be fixed
in the future.  For Puppet Server 5+, users will be able to, via the
JRUBY_JAR environment variable in packaging, configure JRuby 9k to be
used instead of JRuby 1.7 for Ruby language version 2+ support.

In conjunction with a corresponding jruby-utils bump, this commit causes
the presence of the jruby-puppet.compat-version setting to throw an
error at startup, with a message indicating how users can configure the
use of JRuby 9k for Ruby language version 2+ support.
camlow325 added a commit to camlow325/puppetserver that referenced this issue May 25, 2017
This commit bumps the jruby-deps dependency for 1.7 from 1.7.26-2 to
1.7.27-1 and jruby-utils dep from 0.9.0 to 0.10.0.

This commit removes support for the jruby-puppet.compat-version setting.
The compat-version setting was introduced in Puppet Server 2.7.0 to
allow for JRuby to run under Ruby language version 2.0 instead of the
default version, 1.9.  Setting compat-version to "2.0" for JRuby 1.7.27,
however, was broken due to a regression - see:
jruby/jruby#4613 - and is unlikely to be fixed
in the future.  For Puppet Server 5+, users will be able to, via the
JRUBY_JAR environment variable in packaging, configure JRuby 9k to be
used instead of JRuby 1.7 for Ruby language version 2+ support.

In conjunction with a corresponding jruby-utils bump, this commit causes
the presence of the jruby-puppet.compat-version setting to throw an
error at startup, with a message indicating how users can configure the
use of JRuby 9k for Ruby language version 2+ support.
@retoo
Copy link
Contributor

retoo commented Sep 11, 2017

Okay, back to 1.7.26 it is .. that was quite annoying!

be aware that people might still stuck on 1.7.* and upgrading to the latest 1.7 (1.7.27) might lead to this extremely confusing bug. I had to add "$stderr.puts 'here'" at various locations to find it.

zfletch added a commit to perseids-project/llt that referenced this issue May 18, 2020
Because `llt.war` can no longer be updated due to
[jruby/jruby#4613

Manually update
`/usr/share/tomcat6/webapps/llt/WEB-INF/gems/bundler/gems/llt-review-517c60c50457/lib/llt/review/api.rb`
to use `https` (incorporating
[https://github.com/perseids-project/llt-review/commit/617b60a2be01c4010eb9b17bb7b7680525a205fb](https://github.com/perseids-project/llt-review/commit/617b60a2be01c4010eb9b17bb7b7680525a205fb))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants