Open
Description
This plugin claims to be safe for multiple output workers, but in fact is not due to IO#select
on jruby not being threadsafe. We should set declare_workers_not_supported!
to fix this.
The concurrency error Jruby will raise is below.
tcp output exception {:host=>"localhost", :port=>3333, :exception=>#<ConcurrencyError: can not set IO blocking after select; concurrent select detected?>, :backtrace=>["org/jruby/RubyIO.java:3682:in `select'", "/Users/andrewcholakian/projects/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-tcp-2.0.2/lib/logstash/outputs/tcp.rb:101:in `register'", "org/jruby/RubyProc.java:281:in `call'", "/Users/andrewcholakian/projects/logstash/vendor/bundle/jruby/1.9/gems/logstash-codec-plain-2.0.2/lib/logstash/codecs/plain.rb:41:in `encode'", "/Users/andrewcholakian/projects/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-tcp-2.0.2/lib/logstash/outputs/tcp.rb:143:in `receive'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/outputs/base.rb:83:in `multi_receive'", "org/jruby/RubyArray.java:1613:in `each'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/outputs/base.rb:83:in `multi_receive'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/output_delegator.rb:119:in `worker_multi_receive'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/output_delegator.rb:118:in `worker_multi_receive'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/output_delegator.rb:65:in `multi_receive'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/pipeline.rb:275:in `output_batch'", "org/jruby/RubyHash.java:1342:in `each'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/pipeline.rb:275:in `output_batch'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/pipeline.rb:206:in `worker_loop'", "/Users/andrewcholakian/projects/logstash/logstash-core/lib/logstash/pipeline.rb:175:in `start_workers'"], :level=>:warn}