From 0188a7f3f95c5889a1ba71dfce8af2008caaa1ac Mon Sep 17 00:00:00 2001 From: Andrew Cholakian Date: Mon, 28 Mar 2016 12:11:58 -0500 Subject: [PATCH] Revert to use only a single worker by default on outputs The move to auto-scale output workers was great in theory, but a lot of outputs just weren't built to support it well, they often used too many resources or had logical errors. Fixes #4905 --- logstash-core/lib/logstash/pipeline.rb | 8 +++----- logstash-core/spec/logstash/pipeline_spec.rb | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/logstash-core/lib/logstash/pipeline.rb b/logstash-core/lib/logstash/pipeline.rb index afc653c2d..a1ba15388 100644 --- a/logstash-core/lib/logstash/pipeline.rb +++ b/logstash-core/lib/logstash/pipeline.rb @@ -19,6 +19,8 @@ require "logstash/output_delegator" module LogStash; class Pipeline attr_reader :inputs, :filters, :outputs, :worker_threads, :events_consumed, :events_filtered, :reporter, :pipeline_id, :logger, :thread, :config_str, :original_settings + DEFAULT_OUTPUT_WORKERS = 1 + DEFAULT_SETTINGS = { :default_pipeline_workers => LogStash::Config::CpuCoreStrategy.maximum, :pipeline_batch_size => 125, @@ -413,16 +415,12 @@ module LogStash; class Pipeline klass = LogStash::Plugin.lookup(plugin_type, name) if plugin_type == "output" - LogStash::OutputDelegator.new(@logger, klass, default_output_workers, *args) + LogStash::OutputDelegator.new(@logger, klass, DEFAULT_OUTPUT_WORKERS, *args) else klass.new(*args) end end - def default_output_workers - @settings[:pipeline_workers] || @settings[:default_pipeline_workers] - end - # for backward compatibility in devutils for the rspec helpers, this method is not used # in the pipeline anymore. def filter(event, &block) diff --git a/logstash-core/spec/logstash/pipeline_spec.rb b/logstash-core/spec/logstash/pipeline_spec.rb index 45b3f46bb..c33a108c9 100644 --- a/logstash-core/spec/logstash/pipeline_spec.rb +++ b/logstash-core/spec/logstash/pipeline_spec.rb @@ -209,7 +209,7 @@ describe LogStash::Pipeline do pipeline.run expect(pipeline.outputs.size ).to eq(1) - expect(pipeline.outputs.first.workers.size ).to eq(pipeline.default_output_workers) + expect(pipeline.outputs.first.workers.size ).to eq(::LogStash::Pipeline::DEFAULT_OUTPUT_WORKERS) expect(pipeline.outputs.first.workers.first.num_closes ).to eq(1) end