# Stackoverflow error on logstash when using es\_bulk codec

**URL:** <https://discuss.elastic.co/t/stackoverflow-error-on-logstash-when-using-es-bulk-codec/327337>\
**Category:** Logstash\
**Created:** [March 9, 2023, 8:53am UTC](https://discuss.elastic.co/t/stackoverflow-error-on-logstash-when-using-es-bulk-codec/327337 "2023-03-09T08:53:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![eeijlar](https://avatars.discourse-cdn.com/v4/letter/e/96bed5/32.png) [@eeijlar](https://discuss.elastic.co/u/eeijlar)\
**Post date:** [March 9, 2023, 8:53am UTC](https://discuss.elastic.co/t/stackoverflow-error-on-logstash-when-using-es-bulk-codec/327337/1 "2023-03-09T08:53:12Z")

</div>

Using the following pipeline with logstash:

```auto
- pipeline.id: export-process
      pipeline.workers: 4
      config.string: |
        input {
          elasticsearch {
            hosts => "http://elastic:80/elasticsearch/"
            user => "elastic"
            password => ""
            ssl => "false"
            index => "metricbeat-*"
            docinfo => true
            query => '{
                "query": {
                  "bool": {
                    "filter": {
                      "range": {
                          "@timestamp": {
                          "gte": "now-35m",
                          "lte": "now",
                          "format": "strict_date_optional_time||epoch_millis"
                          }
                      }
                    }
                  }
              }
            }'
          }
        }
        output {
          file {
            gzip => "true"
            codec => es_bulk
            path => "/usr/share/logstash/export/export_%{[@metadata][_index]}.json.gz"
          }
        }

```

I get the following error:

```auto
Sending Logstash logs to /usr/share/logstash/logs which is now configured via log4j2.properties
warning: thread "[export-process]>worker1" terminated with exception (report_on_exception is true):
warning: thread "[export-process]>worker2" 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)

```

I am using logstash 7.17.7. I have checked the codec is listed as plugin:

```auto

logstash@60961b0afe3b:~$ logstash-plugin list
Using bundled JDK: /usr/share/logstash/jdk
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
logstash-codec-avro
logstash-codec-cef
logstash-codec-collectd
logstash-codec-dots
logstash-codec-edn
logstash-codec-edn_lines
logstash-codec-es_bulk
logstash-codec-fluent
logstash-codec-graphite
logstash-codec-json
logstash-codec-json_lines

```

I see this issue listed:

> <https://github.com/elastic/logstash/issues/13443>
>
> logstash 7.15.2, installed using yum, run from the command line. The following c…onfiguration
> 
> 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\](https://github.com/elastic/logstash/blob/3aa5741e687ab602169b4a716ff8820f622dd92b/logstash-core/lib/logstash/codecs/base.rb#L47) 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".

but that is for a different codec.

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [March 9, 2023, 2:17pm UTC](https://discuss.elastic.co/t/stackoverflow-error-on-logstash-when-using-es-bulk-codec/327337/2 "2023-03-09T14:17:45Z")

</div>

> [@eeijlar](#):
>
> but that is for a different codec

Not exactly. The base codec class assumes that a codec class will override the encode or multi\_encode method. If it does not then it will get a stack overflow. The issue you linked to used the example of the netflow codec, but it applies to any other codec as well.

The fix would be for the es\_bulk codec to implement an encode method that raises a "not implemented" exception (similar to the [decode](https://github.com/logstash-plugins/logstash-codec-dots/blob/ab1534e594bda9aa56437bb40aff16bef82af948/lib/logstash/codecs/dots.rb#L8) in a dots codec)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 6, 2023, 2:18pm UTC](https://discuss.elastic.co/t/stackoverflow-error-on-logstash-when-using-es-bulk-codec/327337/3 "2023-04-06T14:18:39Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
