logstash-plugins / logstash-integration-kafka

Kafka Integration for Logstash, providing Input and Output Plugins
Apache License 2.0
32 stars 60 forks source link

Updates Kafka client from 2.8.1 to 3.3.1 #130

Closed andsel closed 1 year ago

andsel commented 2 years ago

Release notes

Update kafka client to 3.3.1, requires Logstash >= 8.3.0. Deprecated default value for setting client_dns_lookup, when used it's forced to use_all_dns_ips

What does this PR do?

Updated the Kafka client library used from 2.8.1 to 3.3.1 and Schema Registry from 6.2.2 to 7.3.0.

This PR updates the client library and, due to the removal of zookeeper flag in launching integration Kafka instance, update also the bash scripts used in integration testing. The update of the Schema Registry forces the dependency on Logstash 8.3 because it's the first that ships Jackson 2.13.3 which is strictly required during the instantiation of the client.

Why is it important/What is the impact to the user?

Updating the client requires a library (Jackson) that's available from Logstash 8.3.0 so this is a requirement starting from this version of the plugin. The new Kafka client dropped the default value for configuration client_dns_lookup. Starting from Kafka 2.6.0 it had been deprecated and was removed in Kafka 3.0. The default value for plugin setting client_dns_lookup switched from default to use_all_dns_ips which if a user doesn't customize i,t doesn't create any problem. If a user explicitly set client_dns_lookup to default and updates the plugin to this version then the value is forced to use_all_dns_ips. Simple explanation why default is not a good choice, see here.

Checklist

Author's Checklist

How to test this PR locally

output { stdout { codec => rubydebug {metadata => true } } }

- Launch CLI Kafka producer client and start typing some lines
```sh
bin/kafka-console-producer.sh --topic logstash_topic --broker-list localhost:9092

The events has to be received and logged by Logstash.

Shutdown and cleanup:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic 'logstash_.*'
bin/kafka-server-stop.sh
bin/zookeeper-server-stop.sh

Related issues

Use cases

As a Kafka user I want to be able to use a Logstash plugin aligned to the latest major version of Kafka.

Screenshots

Logs

andsel commented 1 year ago

The CI error that's happening on 7.x branch is:

Java::OrgApacheKafkaCommon::KafkaException:
  Failed to construct kafka producer
# org.apache.kafka.clients.producer.KafkaProducer.<init>(org/apache/kafka/clients/producer/KafkaProducer.java:468)
# org.apache.kafka.clients.producer.KafkaProducer.<init>(org/apache/kafka/clients/producer/KafkaProducer.java:291)
# org.apache.kafka.clients.producer.KafkaProducer.<init>(org/apache/kafka/clients/producer/KafkaProducer.java:318)
# org.apache.kafka.clients.producer.KafkaProducer.<init>(org/apache/kafka/clients/producer/KafkaProducer.java:303)
# jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
# jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(jdk/internal/reflect/NativeConstructorAccessorImpl.java:62)
# jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(jdk/internal/reflect/DelegatingConstructorAccessorImpl.java:45)
# java.lang.reflect.Constructor.newInstance(java/lang/reflect/Constructor.java:490)
# usr.share.plugins.plugin.spec.integration.inputs.kafka_spec.write_some_data_to(/usr/share/plugins/plugin/spec/integration/inputs/kafka_spec.rb:404)
# usr.share.plugins.plugin.spec.integration.inputs.kafka_spec./usr/share/plugins/plugin/spec/integration/inputs/kafka_spec.rb(/usr/share/plugins/plugin/spec/integration/inputs/kafka_spec.rb:411)
# java.lang.invoke.MethodHandle.invokeWithArguments(java/lang/invoke/MethodHandle.java:710)
# ------------------
# --- Caused by: ---
# Java::JavaLang::ClassNotFoundException:
#   com.fasterxml.jackson.databind.json.JsonMapper
#   java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)

happens also with 8.x up to 8.2.3

With LS 8.3.0 jrjackson switched from 0.4.14 to 0.4.15 and this makes the jackson JSON library to switch from 2.9.10 to 2.13.3.

Now, the class that can't be found com.fasterxml.jackson.databind.json.JsonMapper is present in Jackson library only starting from 2.10 .

Kafka Client switched jackson-databind

andsel commented 1 year ago
The full exception is ``` Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/json/JsonMapper at io.confluent.kafka.schemaregistry.utils.JacksonMapper.(JacksonMapper.java:27) at io.confluent.kafka.schemaregistry.client.rest.RestService.(RestService.java:156) at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.(CachedSchemaRegistryClient.java:158) at io.confluent.kafka.schemaregistry.client.SchemaRegistryClientFactory.newClient(SchemaRegistryClientFactory.java:36) at io.confluent.kafka.serializers.AbstractKafkaSchemaSerDe.configureClientProperties(AbstractKafkaSchemaSerDe.java:72) at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.configure(AbstractKafkaAvroSerializer.java:66) at io.confluent.kafka.serializers.KafkaAvroSerializer.configure(KafkaAvroSerializer.java:50) at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:396) at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:291) at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:318) at org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:303) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at org.jruby.dist/org.jruby.javasupport.JavaConstructor.newInstanceDirect(JavaConstructor.java:279) at org.jruby.dist/org.jruby.java.invokers.ConstructorInvoker.call(ConstructorInvoker.java:86) at org.jruby.dist/org.jruby.java.invokers.ConstructorInvoker.call(ConstructorInvoker.java:175) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:386) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:184) at org.jruby.dist/org.jruby.java.proxies.ConcreteJavaProxy$InitializeMethod.call(ConcreteJavaProxy.java:56) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:386) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:184) at org.jruby.dist/org.jruby.RubyClass.newInstance(RubyClass.java:894) at org.jruby.dist/org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen) at org.jruby.dist/org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrNBlock.call(JavaMethod.java:349) at org.jruby.dist/org.jruby.java.proxies.ConcreteJavaProxy$NewMethod.call(ConcreteJavaProxy.java:158) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:192) at org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:125) at org.jruby.dist/org.jruby.runtime.Block.yieldNonArray(Block.java:174) at org.jruby.dist/org.jruby.RubyBasicObject.yieldUnder(RubyBasicObject.java:1764) at org.jruby.dist/org.jruby.RubyBasicObject.instance_exec(RubyBasicObject.java:2680) at org.jruby.dist/org.jruby.RubyBasicObject$INVOKER$i$0$3$instance_exec.call(RubyBasicObject$INVOKER$i$0$3$instance_exec.gen) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:204) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:386) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:184) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:338) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:89) at org.jruby.dist/org.jruby.runtime.Block.yieldSpecific(Block.java:139) at org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503) at org.jruby.dist/org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:89) at org.jruby.dist/org.jruby.runtime.Block.yieldSpecific(Block.java:139) at org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503) at org.jruby.dist/org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:89) at org.jruby.dist/org.jruby.runtime.Block.yieldSpecific(Block.java:139) at org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503) at org.jruby.dist/org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:89) at org.jruby.dist/org.jruby.runtime.Block.yieldSpecific(Block.java:139) at org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503) at org.jruby.dist/org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) at org.jruby.dist/org.jruby.runtime.Block.call(Block.java:129) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:299) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:278) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:266) at org.jruby.dist/org.jruby.RubyProc$INVOKER$i$0$0$call.call(RubyProc$INVOKER$i$0$0$call.gen) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:84) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 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.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) at org.jruby.dist/org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:90) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:192) at org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:125) at org.jruby.dist/org.jruby.runtime.Block.yieldNonArray(Block.java:174) at org.jruby.dist/org.jruby.RubyBasicObject.yieldUnder(RubyBasicObject.java:1764) at org.jruby.dist/org.jruby.RubyBasicObject.instance_exec(RubyBasicObject.java:2680) at org.jruby.dist/org.jruby.RubyBasicObject$INVOKER$i$0$3$instance_exec.call(RubyBasicObject$INVOKER$i$0$3$instance_exec.gen) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:84) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 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.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:182) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:338) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203) 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.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) at org.jruby.dist/org.jruby.runtime.Block.call(Block.java:129) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:299) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:278) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:266) at org.jruby.dist/org.jruby.RubyProc$INVOKER$i$0$0$call.call(RubyProc$INVOKER$i$0$0$call.gen) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:84) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 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.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) at org.jruby.dist/org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:90) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:192) at org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:125) at org.jruby.dist/org.jruby.runtime.Block.yieldNonArray(Block.java:174) at org.jruby.dist/org.jruby.RubyBasicObject.yieldUnder(RubyBasicObject.java:1764) at org.jruby.dist/org.jruby.RubyBasicObject.instance_exec(RubyBasicObject.java:2680) at org.jruby.dist/org.jruby.RubyBasicObject$INVOKER$i$0$3$instance_exec.call(RubyBasicObject$INVOKER$i$0$3$instance_exec.gen) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 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.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:386) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:184) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:338) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205) 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.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) at org.jruby.dist/org.jruby.runtime.Block.call(Block.java:129) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:299) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:278) at org.jruby.dist/org.jruby.RubyProc.call(RubyProc.java:266) at org.jruby.dist/org.jruby.RubyProc$INVOKER$i$0$0$call.call(RubyProc$INVOKER$i$0$0$call.gen) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 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.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:386) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:184) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:191) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:337) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:537) 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.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:537) 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.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:537) 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.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205) 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.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:185) at org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:116) at org.jruby.dist/org.jruby.runtime.Block.yield(Block.java:170) at org.jruby.dist/org.jruby.RubyArray.collect(RubyArray.java:2566) at org.jruby.dist/org.jruby.RubyArray.map19(RubyArray.java:2580) at org.jruby.dist/org.jruby.RubyArray$INVOKER$i$0$0$map19.call(RubyArray$INVOKER$i$0$0$map19.gen) at org.jruby.dist/org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:537) 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.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:185) at org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:116) at org.jruby.dist/org.jruby.runtime.Block.yield(Block.java:170) at org.jruby.dist/org.jruby.RubyArray.collect(RubyArray.java:2566) at org.jruby.dist/org.jruby.RubyArray.map19(RubyArray.java:2580) at org.jruby.dist/org.jruby.RubyArray$INVOKER$i$0$0$map19.call(RubyArray$INVOKER$i$0$0$map19.gen) at org.jruby.dist/org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:537) 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.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:89) at org.jruby.dist/org.jruby.runtime.Block.yieldSpecific(Block.java:139) at org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503) at org.jruby.dist/org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:537) 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.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116) at org.jruby.dist/org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:143) at org.jruby.dist/org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:185) at org.jruby.dist/org.jruby.runtime.BlockBody.yield(BlockBody.java:116) at org.jruby.dist/org.jruby.runtime.Block.yield(Block.java:170) at org.jruby.dist/org.jruby.ir.runtime.IRRuntimeHelpers.yield(IRRuntimeHelpers.java:499) at org.jruby.dist/org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:85) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:386) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:184) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:191) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:337) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205) 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.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) at org.jruby.dist/org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 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.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121) at org.jruby.dist/org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:96) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:81) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:30) at org.jruby.dist/org.jruby.ir.IRTranslator.execute(IRTranslator.java:42) at org.jruby.dist/org.jruby.Ruby.runInterpreter(Ruby.java:870) at org.jruby.dist/org.jruby.Ruby.loadFile(Ruby.java:2961) at org.jruby.dist/org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:234) at org.jruby.dist/org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34) at org.jruby.dist/org.jruby.runtime.load.LoadService.load(LoadService.java:343) at org.jruby.dist/org.jruby.RubyKernel.loadCommon(RubyKernel.java:1043) at org.jruby.dist/org.jruby.RubyKernel.load(RubyKernel.java:1013) at org.jruby.dist/org.jruby.RubyKernel$INVOKER$s$load.call(RubyKernel$INVOKER$s$load.gen) at org.jruby.dist/org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:417) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) at org.jruby.dist/org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) at org.jruby.dist/org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.INTERPRET_EVAL(Interpreter.java:106) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.evalCommon(Interpreter.java:158) at org.jruby.dist/org.jruby.ir.interpreter.Interpreter.evalWithBinding(Interpreter.java:182) at org.jruby.dist/org.jruby.RubyKernel.evalCommon(RubyKernel.java:1090) at org.jruby.dist/org.jruby.RubyKernel.eval(RubyKernel.java:1052) at org.jruby.dist/org.jruby.RubyKernel$INVOKER$s$0$3$eval.call(RubyKernel$INVOKER$s$0$3$eval.gen) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:220) at org.jruby.dist/org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:216) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:418) at org.jruby.dist/org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:236) at usr.share.rvm.gems.jruby_minus_9_dot_2_dot_9_dot_0.bin.jruby_executable_hooks.invokeOther18:eval(/usr/share/rvm/gems/jruby-9.2.9.0/bin/jruby_executable_hooks:22) at usr.share.rvm.gems.jruby_minus_9_dot_2_dot_9_dot_0.bin.jruby_executable_hooks.RUBY$script(/usr/share/rvm/gems/jruby-9.2.9.0/bin/jruby_executable_hooks:22) at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710) at org.jruby.dist/org.jruby.ir.Compiler$1.load(Compiler.java:89) at org.jruby.dist/org.jruby.Ruby.runScript(Ruby.java:857) at org.jruby.dist/org.jruby.Ruby.runNormally(Ruby.java:780) at org.jruby.dist/org.jruby.Ruby.runNormally(Ruby.java:798) at org.jruby.dist/org.jruby.Ruby.runFromMain(Ruby.java:610) at org.jruby.dist/org.jruby.Main.doRunFromMain(Main.java:412) at org.jruby.dist/org.jruby.Main.internalRun(Main.java:304) at org.jruby.dist/org.jruby.Main.run(Main.java:234) at org.jruby.dist/org.jruby.Main.main(Main.java:206) Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.json.JsonMapper at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ```

Which is summarized as:

Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/json/JsonMapper
    at io.confluent.kafka.schemaregistry.utils.JacksonMapper.<clinit>(JacksonMapper.java:27)
    at io.confluent.kafka.schemaregistry.client.rest.RestService.<clinit>(RestService.java:156)
    at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.<init>(CachedSchemaRegistryClient.java:158)
    at io.confluent.kafka.schemaregistry.client.SchemaRegistryClientFactory.newClient(SchemaRegistryClientFactory.java:36)
    at io.confluent.kafka.serializers.AbstractKafkaSchemaSerDe.configureClientProperties(AbstractKafkaSchemaSerDe.java:72)
    at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.configure(AbstractKafkaAvroSerializer.java:66)
    at io.confluent.kafka.serializers.KafkaAvroSerializer.configure(KafkaAvroSerializer.java:50)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:396)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:291)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:318)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:303)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.jruby.dist/org.jruby.javasupport.JavaConstructor.newInstanceDirect(JavaConstructor.java:279)
    <JRuby intepreter part> 
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.json.JsonMapper
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)

So it comes from io.confluent:kafka-schema-registry-client org.apache.kafka:kafka-clients

andsel commented 1 year ago

Looking better at the problem, it originates from the fact that io.confluent.kafka.schemaregistry.client.rest.RestService which uses a singleton of io.confluent.kafka.schemaregistry.utils.JacksonMapper fails because the JacksonMapper class has a dependency on com.fasterxml.jackson.databind.json.JsonMapper.

The io.confluent:kafka-schema-registry-client:6.2.2 used in previous version of the plugin had a dependency on jackson-databind:2.12.5 which in theory should have presented the class not found problem of JsonMapper; but it didn't happen because the io.confluent.kafka.schemaregistry.utils.JacksonMapper switched implementation: