Skip to content

java.lang.StackOverflowError when codec does not have an encode method #13443

@TheVastyDeep

Description

@TheVastyDeep

logstash 7.15.2, installed using yum, run from the command line. The following configuration

input { generator { count => 1 lines => [ '' ] } }
output { udp { port  => 2055 codec => netflow host => "127.1.2.3" } }

results in

warning: thread "[main]>worker0" terminated with exception (report_on_exception is true):
java.lang.StackOverflowError
    at usr.share.logstash.logstash_minus_core.lib.logstash.codecs.base.encode(/usr/share/logstash/logstash-core/lib/logstash/codecs/base.rb:48)
    at usr.share.logstash.logstash_minus_core.lib.logstash.codecs.base.multi_encode(/usr/share/logstash/logstash-core/lib/logstash/codecs/base.rb:64)
    at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1820)
    at usr.share.logstash.logstash_minus_core.lib.logstash.codecs.base.multi_encode(/usr/share/logstash/logstash-core/lib/logstash/codecs/base.rb:64)
    at usr.share.logstash.logstash_minus_core.lib.logstash.codecs.base.encode(/usr/share/logstash/logstash-core/lib/logstash/codecs/base.rb:48)
    at usr.share.logstash.logstash_minus_core.lib.logstash.codecs.base.multi_encode(/usr/share/logstash/logstash-core/lib/logstash/codecs/base.rb:64)
    at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1820)

because in codec/base.rb encode calls multi_encode, which calls encode.

Personally I think the netflow codec should be modified to add an encode method which throws an exception saying "You cannot use this codec on an output".

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions