Skip to content

Claims to be threadsafe, is not #13

Open
@andrewvc

Description

@andrewvc

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}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions