fishwife icon indicating copy to clipboard operation
fishwife copied to clipboard

java.lang.NoSuchMethodError on Jruby 9.3.3.0 nightly build

Open kovyrin opened this issue 3 years ago • 3 comments

While testing our product on the most recent Jruby 9.3.3.0 nightly build, I have noticed an issue with Fishwife's IOUtil class.

This call (https://github.com/dekellum/fishwife/blob/fishwife-dev/src/main/java/fishwife/IOUtil.java#L116) blows up like so:

java.lang.NoSuchMethodError: 'org.jruby.runtime.Block org.jruby.runtime.CallBlock.newCallClosure(org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyModule, org.jruby.runtime.Arity, org.jruby.runtime.BlockCallback, org.jruby.runtime.ThreadContext)'
	at fishwife.IOUtil.writeBody(IOUtil.java:116)
	at fishwife.IOUtil$INVOKER$s$2$0$writeBody_DBG.call(IOUtil$INVOKER$s$2$0$writeBody_DBG.gen)
	at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
	at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
	at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
	at org.jruby.dist/org.jruby.internal.runtime.methods.InterpretedIRMethod.INTERPRET_METHOD(InterpretedIRMethod.java:131)
	at org.jruby.dist/org.jruby.internal.runtime.methods.InterpretedIRMethod.call(InterpretedIRMethod.java:109)
	at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:85)
	at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
	at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
	at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
	at org.jruby.dist/org.jruby.internal.runtime.methods.InterpretedIRMethod.INTERPRET_METHOD(InterpretedIRMethod.java:131)
	at org.jruby.dist/org.jruby.internal.runtime.methods.InterpretedIRMethod.call(InterpretedIRMethod.java:118)
	at org.jruby.dist/org.jruby.RubyClass.finvoke(RubyClass.java:780)
	at org.jruby.dist/org.jruby.runtime.Helpers.invoke(Helpers.java:661)
	at org.jruby.dist/org.jruby.RubyBasicObject.callMethod(RubyBasicObject.java:370)
	at rubyobj.Fishwife.RackServlet.service(/Users/kovyrin-elastic/work/elastic/ent-search/vendor/fishwife-servlet/lib/fishwife/rack_servlet.rb:71)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
	at org.eclipse.jetty.servlets.QoSFilter.doFilter(QoSFilter.java:202)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:763)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
	at java.base/java.lang.Thread.run(Thread.java:829)

(Please ignore line numbers in the stack trace since the error was detected on our internal fork of fishwife, which has some parts of the code reformatted, etc)

kovyrin avatar Jan 18 '22 21:01 kovyrin

Paging @headius for visibility

kovyrin avatar Jan 18 '22 21:01 kovyrin

This should be fixed by #24 but I was unable to get the build to run tests.

headius avatar Jan 18 '22 21:01 headius

See also https://github.com/jruby/jruby/commit/53f18bc936001eaeab4a5344f034b31d015f3aa4 which adds back the missing signature temporarily.

headius avatar Jan 18 '22 21:01 headius