logstash-plugins / logstash-codec-netflow

Apache License 2.0
79 stars 88 forks source link

fail to initialize the plugin with wrong number of arguments (given 1, expected 0) #204

Closed kaisecheng closed 6 months ago

kaisecheng commented 6 months ago

Since logstash upgrade ruby from 2.6 to 3.0, this plugin fails to initialize. According to update to JRuby 9.4, method clone need to rewrite to clone(*args)

The plugin has defined its clone, which overwrites the base class clone. The codec class is wrapped by Delegator, hence fails to initialize with clone(freeze: ) here I believe it is not desired to redefine the method.

Log

[2023-12-12T10:53:05,136][ERROR][logstash.javapipeline ][main][netflow] A plugin had an unrecoverable error. Will restart this plugin.
Pipeline_id:main
Plugin: <LogStash::Inputs::Udp codec=><LogStash::Codecs::Netflow id=>"netflow_7a6737e7-8f36-4b23-8b18-5858e94d275b", enable_metric=>true, cache_ttl=>4000, target=>"netflow", include_flowset_id=>false, versions=>[5, 9, 10]>, id=>"netflow", port=>2055, tags=>["netflow"], enable_metric=>true, host=>"0.0.0.0", buffer_size=>65536, workers=>2, queue_size=>2000>
Error: wrong number of arguments (given 1, expected 0)
Exception: ArgumentError
Stack: /usr/share/logstash/vendor/bundle/jruby/3.1.0/gems/logstash-codec-netflow-4.3.0/lib/logstash/codecs/netflow.rb:60:in `clone'
/usr/share/logstash/vendor/jruby/lib/ruby/stdlib/delegate.rb:226:in `initialize_clone'
org/jruby/RubyKernel.java:2187:in `clone'
/usr/share/logstash/vendor/bundle/jruby/3.1.0/gems/logstash-input-udp-3.5.0/lib/logstash/inputs/udp.rb:76:in `block in run'
org/jruby/RubyArray.java:2809:in `map'
/usr/share/logstash/vendor/bundle/jruby/3.1.0/gems/logstash-input-udp-3.5.0/lib/logstash/inputs/udp.rb:74:in `run'
/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:414:in `inputworker'
/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:405:in `block in start_input'

Relates: https://github.com/elastic/logstash/pull/14861