org.jruby.exceptions.RaiseException: (TypeError) nil is not a string

JIRA | Marc Fournier | 4 years ago
tip
Click on the to mark the solution that helps you, Samebug will learn from it.
As a community member, you’ll be rewarded for you help.
  1. 0

    I know using tags is deprecated in outputs now, but I noticed using them caused logstash to crash. This seems serious enough to file a bugreport. I narrowed down the problem to the following configuration (the crash happens on the first event received): {code} input { stdin { tags => [ "foo", "bar" ] } } output { riemann { tags => [ "bar", "baz" ] } } {code} I also reproduced this problem at least with the statsd and irc plugins, always with the same reference to logstash.jar!/logstash/outputs/base.rb:69, so I guess the problem is on most/all output plugins. The full stacktrace: {code} Pipeline started {:level=>:info, :file=>"/opt/logstash/logstash.jar!/logstash/pipeline.rb", :line=>"69", :method=>"run"} sdgsdg output received {:event=>#<LogStash::Event:0x3ae092f4 @cancelled=false, @data={"message"=>"sdgsdg", "@timestamp"=>"2013-09-09T12:26:21.779Z", "@version"=>"1", "tags"=>["foo", "bar"], "host"=>"lonquimay"}>, :level=>:info, :file=>"(eval)", :line=>"16", :method=>"initialize"} Exception in thread "LogStash::Runner" org.jruby.exceptions.RaiseException: (TypeError) nil is not a string at org.jruby.RubyBasicObject.__send__(org/jruby/RubyBasicObject.java:1701) at org.jruby.RubyKernel.send(org/jruby/RubyKernel.java:2209) at RUBY.output?(file:/opt/logstash/logstash.jar!/logstash/outputs/base.rb:69) at RUBY.receive(file:/opt/logstash/logstash.jar!/logstash/outputs/riemann.rb:76) at RUBY.initialize((eval):17) at org.jruby.RubyProc.call(org/jruby/RubyProc.java:255) at RUBY.output(file:/opt/logstash/logstash.jar!/logstash/pipeline.rb:247) at RUBY.outputworker(file:/opt/logstash/logstash.jar!/logstash/pipeline.rb:212) at RUBY.start_outputs(file:/opt/logstash/logstash.jar!/logstash/pipeline.rb:140) {code}

    JIRA | 4 years ago | Marc Fournier
    org.jruby.exceptions.RaiseException: (TypeError) nil is not a string
  2. 0

    Hello, I'm trying the new 1.2.1 Logstash version. But I have an error when upgrading from 1.1.13 to 1.2.1 using stdin + elasticsearch plugin. If I keep the old tags parameter, it failed to output to elasticsearch plugin input { stdin { tags => ["xxx"] type => "test" } } output { stdout { codec => rubydebug } elasticsearch { host => "logstash.elasticsearch.xxx.com" cluster => "logstash-es-cluster" tags => "xxx"} } I got this Exception in thread "LogStash::Runner" org.jruby.exceptions.RaiseException: (TypeError) nil is not a string at org.jruby.RubyBasicObject.__send__(org/jruby/RubyBasicObject.java:1701) at org.jruby.RubyKernel.send(org/jruby/RubyKernel.java:2209) at RUBY.output?(file:/opt/logstash/server/lib/logstash-1.2.1-flatjar.jar!/logstash/outputs/base.rb:69) at RUBY.receive(file:/opt/logstash/server/lib/logstash-1.2.1-flatjar.jar!/logstash/outputs/elasticsearch.rb:152) at RUBY.initialize((eval):28) at org.jruby.RubyProc.call(org/jruby/RubyProc.java:255) at RUBY.output(file:/opt/logstash/server/lib/logstash-1.2.1-flatjar.jar!/logstash/pipeline.rb:247) at RUBY.outputworker(file:/opt/logstash/server/lib/logstash-1.2.1-flatjar.jar!/logstash/pipeline.rb:212) at RUBY.start_outputs(file:/opt/logstash/server/lib/logstash-1.2.1-flatjar.jar!/logstash/pipeline.rb:140) If I remove (tags => "xxx") from the output definition it works fine. I'll change my configuration to use the new if syntax but I guess it can a problem for some people upgrading to 1.2.1 without changing the configuration.

    JIRA | 4 years ago | jujugrrr
    org.jruby.exceptions.RaiseException: (TypeError) nil is not a string

    Root Cause Analysis

    1. org.jruby.exceptions.RaiseException

      (TypeError) nil is not a string

      at org.jruby.RubyBasicObject.__send__()
    2. JRuby Main Maven Artifact
      RubyKernel.send
      1. org.jruby.RubyBasicObject.__send__(org/jruby/RubyBasicObject.java:1701)
      2. org.jruby.RubyKernel.send(org/jruby/RubyKernel.java:2209)
      2 frames